2011-01-29 84 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