2011-01-29 91 views
1

首次Java程序员。我想知道我在Android平台(java)上加载XML的选项。关于连接和数据加载的文档/演示很少(AFAIK)。我需要使用基本身份验证来签署请求,然后GET/POST/PUT/DELETE到一个将返回application/xml内容类型的URL。基本上我需要效仿这种类型的卷曲请求在Java中:Android/Java的RESTful Web服务选项

curl -H 'Content-type: application/xml' -H 'Accept: application/xml' \ 
     -u '{account}/{username}:{apikey}' https://mywebsite.com 

我应该使用org.apache的HttpClient还是有更好的解决办法?一旦我从API中加载了XML响应,推荐的Android解析器是什么。 Java似乎有很多解析器,我完全不知所措。

回答

2

当然使用了HTTPClient,它应该在Android上工作,它是如此容易得多,使比自己写一个来电...这里有一个例子: -

// Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("id", "12345")); 
     nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
2

我喜欢Jerseyclient自己:

相关性:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>1.5</version> 
</dependency> 

实施例:

WebResource resource = Client.create().resource("http://www.site.com/"); 
ClientResponse response = resource.path("user/list").header("foo", "bar").type(MediaType.TEXT_PLAIN).post("Awesome Sauce!", ClientResponse.class); 
String responseBody = response.getEntity(String.class); 
System.out.println(responseBody); 

HttpClient肯定会奏效。

对于解析器,我喜欢JAXBXStreamXPPJDOM,或总是有Java的DOM API。有一堆你可以谷歌的XML库。 XPP重量轻,速度快,可能适用于Android。

2

一个我见过的最好的例子是从罗曼盖伊(谷歌的工程师研究Android)的货架应用:

http://code.google.com/p/shelves/

应用发出HTTP请求到谷歌图书服务及解析它返回的XML。还有其他的例子。但由于Shelves应用程序来自Google的其中一位人员,我一直比其他代码更有信心展示最佳实践。

1

调用REST服务的最新技术由官方推特应用程序的作者Google IO 2010提供。在解析XML方面,我通常使用SDK中内置的pull解析器。

对于更高级别的REST框架,请参阅Spring Android