如何将REST客户端转移到Android平台

时间:2012-09-27 13:39:54

标签: java xml rest

我在普通的java项目中使用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();
}

当我在普通的Java应用程序中使用它时,结果是TestBean类实例。如何将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);

1 个答案:

答案 0 :(得分:0)

Android应用程序在Java上运行。所以理论上你应该能够在Android应用程序中使用代码,而不必进行很多更改。 Android确实要求所有网络/互联网工作都在一个单独的线程中完成。 Android应用程序的编译方式也与常规Java程序不同。因此,您必须使用Android插件将代码加载到Eclipse中,并将其构建/编译为Android项目。您应该能够在不必过多更改代码的情况下完成此操作。如果您遇到部分代码问题,请尝试查看LogCat以获取堆栈跟踪。这将为您提供问题所在的先机