2013-08-22 48 views
-1

给我投了反对票为这个职位,请考虑这些事实面前....ANDROID:如何从此链接获取信息http://api.discogs.com/artist/ac/dc?

我已经尝试了许多e.gs从互联网解析信息,

有的说是上面的链接是其中的JSON由看起来像XML,有人说其在XML ...

<resp stat="ok" version="2.0"> 
<artist> 
<images> 
<image height="480" type="primary" uri="http://api.discogs.com/image/A-29735-1232126311.jpeg" uri150="http://api.discogs.com/image/A-150-29735-1232126311.jpeg" width="471"/> 
<image height="495" type="secondary" uri="http://api.discogs.com/image/A-29735-1147363179.jpeg" uri150="http://api.discogs.com/image/A-150-29735-1147363179.jpeg" width="574"/> 
<image height="480" type="secondary" uri="http://api.discogs.com/image/A-29735-1147363173.jpeg" uri150="http://api.discogs.com/image/A-150-29735-1147363173.jpeg" width="600"/> 
<image height="299" type="secondary" uri="http://api.discogs.com/image/A-29735-001.jpg" uri150="http://api.discogs.com/image/A-150-29735-001.jpg" width="299"/> 
<image height="298" type="secondary" uri="http://api.discogs.com/image/A-29735-1147363246.jpeg" uri150="http://api.discogs.com/image/A-150-29735-1147363246.jpeg" width="451"/> 
<image height="600" type="secondary" uri="http://api.discogs.com/image/A-29735-1259307969.jpeg" uri150="http://api.discogs.com/image/A-150-29735-1259307969.jpeg" width="600"/> 
<image height="300" type="secondary" uri="http://api.discogs.com/image/A-29735-1306883944.jpeg" uri150="http://api.discogs.com/image/A-150-29735-1306883944.jpeg" width="300"/> 
</images> 
<id>29735</id> 
<name>Coldplay</name> 
<profile> 
Coldplay is an English rock band from London, England. They've been a band since January 16, 1998 when they lost a demotape competition on XFM in London. Philip Christopher Harvey is the band's manager. [b][u]Line-up:[/u][/b] Jonny Buckland (Jonathan Mark Buckland) - Guitar Will Champion (William Champion) - Drums Guy Berryman (Guy Rupert Berryman) - Bass Chris Martin (Christopher Anthony John Martin) - Vocals 
</profile> 
<data_quality>Correct</data_quality> 
<urls> 
<url>http://www.coldplay.com</url> 
<url>http://www.myspace.com/coldplay</url> 
<url>http://www.youtube.com/ColdplayTV</url> 
<url>http://www.twitter.com/coldplay</url> 
<url>http://www.facebook.com/pages/Coldplay/15253175252</url> 
<url>http://en.wikipedia.org/wiki/Coldplay</url> 
</urls> 
<namevariations> 
<name>Cold Play</name> 
<name>Cold Played</name> 
<name>Cold Player, The</name> 
<name>Coldplay, The</name> 
<name>Goldplay</name> 
</namevariations> 
<members> 
<name>Chris Martin</name> 
<name>Guy Berryman</name> 
<name>Jon Buckland</name> 
<name>Will Champion</name> 
</members> 
</artist> 
</resp> 

我不知道自己在什么格式它,但看起来像XML来我..我 不记得,但如何我能够从这个页面获得json的信息,而不是从我的代码,但通过玩这个网页(我没有你SE虽然转换器)

{"resp": {"status": true, "version": "2.0", "artist": {"profile": "An Australian rock band, formed in 1973 by Angus and Malcolm Young, they teamed up with Dave Evans (vocals), Larry Van Kriedt (bass) and Colin Burgess (drums). In 1974 both Larry Van Kriedt and Colin Burgess left and were replaced by Rob Bailey (bass) and Peter Clack (drums), a further change in 1974 saw Peter Clack leave and Tony Currenti (drums) join the band. In June 1974 they were signed by Harry Vanda & George Young (Malcolm & Angus's brother) to Albert Productions. In November 1974, Dave Evans left the band and was replaced by Bon Scott (vocals & bagpipes). Rob Bailey also left in 1974 and was replaced by George Young (bass). In 1975 Phil Rudd (drums) replaced Tony Currenti and Mark Evans (bass) replaced George Young. In June 1977 Mark Evans left and is replaced by Cliff Williams (bass) for their first tour of the USA. On the 19 Feb 1980 Bon Scott died at the age of 33. Brian Johnson (ex Geordie) joined the band to replace him on vocals and the album \"Back In Black\" was released, a tribute to Bon Scott, this album became the 2nd largest selling album of all time with over 40 million copies sold worldwide. In May 1983, Phil Rudd had a parting of the ways and was replaced by Simon Wright (drums), aged 20 then. November 1989 Simon Wright left and is replaced by Chris Slade (ex Manfred Mann's Earth Band, Uriah Heep & The Firm). In summer 1994 Phil Rudd \"quietly\" rejoined the band.\r\n\r\nAC/DC are Australia's most successful rock band ever, and are popular around the world.\r\nThe band was inducted into Rock And Roll Hall Of Fame in 2003 as a performer.\r\n\r\nCurrent line-up:\r\nAngus Young (lead guitar)\r\nMalcolm Young (rhythm guitar)\r\nBrian Johnson (vocals)\r\nCliff Williams (bass guitar)\r\nPhil Rudd (drums)\n", "releases_url": "http://api.discogs.com/artists/84752/releases", "name": "AC/DC", "uri": "http://www.discogs.com/artist/AC%2FDC", "members": ["Angus Young", "Bon Scott", "Brian Johnson", "Chris Slade", "Cliff Williams", "Colin Burgess", "Dave Evans", "Larry Van Kriedt", "Malcolm Young", "Mark Evans (3)", "Phil Rudd", "Simon Wright (4)"], "urls": ["http://www.acdcrocks.com/", "http://www.acdc.com/", "http://www.acdcpower.net/", "http://www.myspace.com/acdc", "http://en.wikipedia.org/wiki/AC/DC"], "images": [{"uri": "http://api.discogs.com/image/A-84752-1233004620.jpeg", "height": 309, "width": 418, "resource_url": "http://api.discogs.com/image/A-84752-1233004620.jpeg", "type": "primary", "uri150": "http://api.discogs.com/image/A-150-84752-1233004620.jpeg"}, {"uri": "http://api.discogs.com/image/A-84752-1094915280.jpg", "height": 313, "width": 300, "resource_url": "http://api.discogs.com/image/A-84752-1094915280.jpg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1094915280.jpg"}, {"uri": "http://api.discogs.com/image/A-84752-1105107816.jpg", "height": 129, "width": 180, "resource_url": "http://api.discogs.com/image/A-84752-1105107816.jpg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1105107816.jpg"}, {"uri": "http://api.discogs.com/image/A-84752-1107645658.jpg", "height": 199, "width": 200, "resource_url": "http://api.discogs.com/image/A-84752-1107645658.jpg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1107645658.jpg"}, {"uri": "http://api.discogs.com/image/A-84752-1182165014.jpeg", "height": 335, "width": 498, "resource_url": "http://api.discogs.com/image/A-84752-1182165014.jpeg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1182165014.jpeg"}, {"uri": "http://api.discogs.com/image/A-84752-1233004627.jpeg", "height": 360, "width": 480, "resource_url": "http://api.discogs.com/image/A-84752-1233004627.jpeg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1233004627.jpeg"}, {"uri": "http://api.discogs.com/image/A-84752-1233004633.jpeg", "height": 247, "width": 457, "resource_url": "http://api.discogs.com/image/A-84752-1233004633.jpeg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1233004633.jpeg"}, {"uri": "http://api.discogs.com/image/A-84752-1233004641.jpeg", "height": 376, "width": 400, "resource_url": "http://api.discogs.com/image/A-84752-1233004641.jpeg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1233004641.jpeg"}, {"uri": "http://api.discogs.com/image/A-84752-1233004648.jpeg", "height": 389, "width": 572, "resource_url": "http://api.discogs.com/image/A-84752-1233004648.jpeg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1233004648.jpeg"}, {"uri": "http://api.discogs.com/image/A-84752-1297548279.jpeg", "height": 414, "width": 600, "resource_url": "http://api.discogs.com/image/A-84752-1297548279.jpeg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1297548279.jpeg"}, {"uri": "http://api.discogs.com/image/A-84752-1294786426.jpeg", "height": 450, "width": 450, "resource_url": "http://api.discogs.com/image/A-84752-1294786426.jpeg", "type": "secondary", "uri150": "http://api.discogs.com/image/A-150-84752-1294786426.jpeg"}], "resource_url": "http://api.discogs.com/artists/84752", "id": 84752, "data_quality": "Correct", "namevariations": ["AC/DC", "AC DC", "AC-DC", "AC//DC", "ACDC", "DC/AC", "\u042d\u0439 \u0421\u0438 \u0414\u0438 \u0421\u0438"]}}} 

但是当你只是尝试点击它看起来像一个xml文件的链接.... 是它无论是...我救了它的两个格式,并一度试图来获取xml信息,并试图获取json信息.... xml为我工作..i使用下面的代码,这工作...但事情是...当我尝试直接从链接....我没有得到任何东西,请有人可以从该链接中获取任何东西?我完全困惑我应该获取JSON或XML?

Document doc = builder.parse("D:/workspace1/dd.xml");/////android_asset/www/dd.xml 
XPathFactory xPathfactory = XPathFactory.newInstance(); 
XPath xpath = xPathfactory.newXPath(); 
XPathExpression expr = xpath.compile("//resp/artist/images/image[@uri]"); 
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); 

for (int zzz = 0; zzz < nl.getLength(); zzz++) 
{ 
    Node currentItem = nl.item(zzz); 
    String key = currentItem.getAttributes().getNamedItem("uri").getNodeValue(); 
    System.out.println(key); 
} 

也是上面的代码是不会在Android的工作(工作在Java的罚款)。(你有一个的try/catch包围它,使之无差错)

还当我保存它作为一个JSON文件我想这代码没有工作

HttpPost httppost = new HttpPost("file://D:/workspace1/dd.json"); 

httppost.setHeader("Content-type", "application/json"); 

InputStream inputStream = null; 

try { 
    HttpResponse response = httpclient.execute(httppost);   
    HttpEntity entity = response.getEntity(); 
    String result=null; 
    inputStream = entity.getContent(); 
    // json is UTF-8 by default 
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    while ((line = reader.readLine()) != null) 
    { 
     sb.append(line + "\n"); 
    } 
    result = sb.toString(); 
    TV.setText(result); 
    Bundle jObject = null; 
    String aJsonString = jObject.getString("status"); 
    TV.setText(aJsonString); 
} catch (Exception e) { 
    Log.e("MYAPP", "exception", e); 
} 
finally { 
    try{if(inputStream != null)inputStream.close();}catch(Exception squish){} 
} 
+0

昨天我开始玩Discogs API,到目前为止,我一直在访问所有以JSON(如果我想要的话,JSONP)为例。我正在使用ASP.NET/C#/ MVC 3/Razor/jQuery。 – melancia

+0

所以它在json中是否正确?请你详细说明一下吗?因为我现在完全困惑,而这个解析对我来说是全新的。 –

+0

你可以使用jQuery来做到这一点:http://api.jquery.com/jQuery.parseJSON/或原生的Javascript:http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript – melancia

回答

0

好吧,你的问题是有点混乱,基本上,链接,我只生成XML,这是相当标准的东西,但奇怪的是如果我要求说http://api.discogs.com/我只获取JSON数据,即使我提出请求,这也不重要内容类型为'application/xml',反之亦然,提供的url和'application/json'的内容类型。

你需要做的是在你的HTTP请求响应中查看被返回主体的内容类型,如果'application/xml'使用你的XML解析器,如果'application/json'然后使用JSON解析器。

我不能说比这个更多的东西,没有关于它提供什么意思的网站的文档。理想情况下,如果您可以使用所有JSON,那么您应该更适合手机使用XML。

如何解析JSON的Android的一个例子可以在这里找到:http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

你的数据显然会比这个例子更复杂,因为你里面有对象的对象。

虽然基本知识是一切都是关键:在Java中通常代表一个Map的价值。

+0

以及根据文件说它的JSON ...你应该已经读过我的问题的整个细节....我试图从它取信息考虑它作为一个JSON以及......但我无法。 –

+0

那么你有没有链接到文档你?你所说的只是该网站表示它使用JSON,除了使用XML的Artist对象外,所有内容都很简单。我也告诉过你,如果你有一个HTTP响应,你可以检查内容类型并相应地使用正确的解析器类型,这是恐怕最好的一个问题。 –

+0

如果它是简单的xml为什么不是上述代码为我工作??但工作的另一个XML文件? –