第一次是Java程序员。我想知道我在Android平台(java)上加载XML的选择是什么。关于连接和数据加载的文档/演示很少(AFAIK)。我需要使用基本身份验证签署一个请求,然后GET / POST / PUT / DELETE到一个URL,该URL将返回application / xml内容类型。基本上我需要在Java中模拟这种类型的cURL请求:
curl -H 'Content-type: application/xml' -H 'Accept: application/xml' \
-u '{account}/{username}:{apikey}' https://mywebsite.com
我应该只使用org.apache中的HttpClient
还是有更好的解决方案?一旦我从我的API加载了XML响应,推荐的Android解析器是什么。似乎有很多Java解析器,我完全不知所措。
答案 0 :(得分: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
}
答案 1 :(得分:2)
相关性:
<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
肯定会奏效。
对于解析器,我喜欢JAXB,XStream,XPP,JDOM,或者总是有Java DOM API。你可以谷歌搜索一堆XML库。 XPP重量轻,速度快,适用于Android。
答案 2 :(得分:2)
我见过的最好的例子之一是来自Romain Guy的Shelves应用程序(一位在Android上工作的Google工程师):
http://code.google.com/p/shelves/
该应用向Google图书服务发出HTTP请求,并解析它返回的XML。还有其他一些例子。但是,由于Shelves应用程序来自Google之一,我总是更加相信它显示最佳实践,而不是我遇到的其他代码。
答案 3 :(得分:1)
调用REST服务的最新技术由Google IO 2010官方Twitter应用程序的作者提出。在解析XML方面,我通常使用SDK内置的pull解析器。
对于更高级别的REST框架,请查看Spring Android。