适用于Android / Java的RESTful Web服务选项

时间:2011-01-29 03:35:03

标签: java android xml restful-authentication

第一次是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解析器,我完全不知所措。

4 个答案:

答案 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)

我更喜欢自己的Jersey client

相关性:

<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 :(得分: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