ANDROID:如何从此链接获取信息http://api.discogs.com/artist/ac/dc?

时间:2013-08-22 12:31:55

标签: android json xml-parsing html-parsing android-music-player

在给我这个帖子的负面投票之前,请考虑这些事实......

我尝试过许多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信息,而不是从我的代码,但通过玩该网页(虽然我没有使用转换器)

{"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){}
}

1 个答案:

答案 0 :(得分:0)

好吧,你的问题基本上有点混乱,我的链接只产生XML,这是非常标准的东西,虽然奇怪如果我要求说http://api.discogs.com/我只获得JSON数据,这无关紧要即使我使用提供的URL和内容类型“application / json”以内容类型“application / xml”发出请求,反之亦然。

您需要做的是在HTTP请求的响应中查看正在返回的正文的内容类型,如果它是'application / xml'则使用您的XML解析器,如果是'application / json'则使用JSON解析器。

除了网站关于它意味着提供什么的文档之外,我不能说更多。理想情况下,如果您可以使用所有JSON,那么移动设备应该更好地使用XML。

此处提供了如何解析Android的JSON的示例:http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

您的数据显然会比示例更复杂,因为您在对象中有对象。

但基本要素是一切都是关键:Java中的值通常代表一个Map。