2012-09-27 18 views
0

我在普通的Java項目中使用了REST服務,並且它的工作方式應該如此。我現在想做的是在Android應用上使用相同的服務(並獲得相同的結果)。如何將REST客戶端傳輸到Android平臺

response = mWebResource.path("/test").accept("application/xml").get(ClientResponse.class); 
status = response.getStatus(); 
if (status == 200) { 
    TestBean jbl = response.getEntity(TestBean.class); 
    System.out.println(jbl); 
} 

在服務器端,它看起來是這樣的:

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.core.HttpHeaders; 
import javax.ws.rs.core.UriInfo; 

@GET 
@Path("/test") 
@Produces("application/xml") 
public TestBean getGetTest(@Context HttpHeaders headers) { 
    try { 
     TestBean bean = new TestBean(); 
     return bean; 
    } 
    catch (Exception e) { 
    } 
    return new TestBean(); 
} 

這裏的結果中,testBean類的實例,當我在一個普通的Java應用程序中使用它。如何讓TestBean進入Android?我只能成功獲取XML流。到目前爲止,我的android測試代碼看起來像這樣。這裏的關鍵似乎是response.getEntity調用不能接受類參數。

HttpClient client = new DefaultHttpClient(); 
BasicHttpContext localContext = new BasicHttpContext(); 
BasicScheme basicAuth = new BasicScheme(); 
HttpHost targetHost = new HttpHost("192.168.100.114", 80, "http"); 
HttpGet httpget = new HttpGet("http://192.168.100.114/RestWeb/test"); 
HttpResponse response = client.execute(targetHost, httpget); 
HttpEntity entity = response.getEntity(); 
Object content = EntityUtils.toString(entity); 
System.out.println(content); 

回答

0

Android應用程序在Java上運行。所以理論上你應該能夠像在Android應用程序中一樣使用代碼,而不必做出很多改變。 Android確實需要所有的網絡/互聯網工作都在單獨的線程中完成。 Android應用程序的編譯方式也不同於普通的Java程序。因此,您必須使用Android插件將代碼加載到Eclipse中,然後將其作爲Android項目編譯/編譯。你應該能夠做到這一點,而不必更改你的代碼太多。如果您有一部分代碼遇到問題,請嘗試查看堆棧跟蹤的LogCat。這會給你一個開始,問題在哪裏

+0

我試過了。我的一個問題是,jaxb無法翻譯成dalvik-vm,但它沒有說明爲什麼 –

相關問題