0

我在一个普通的 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);
4

1 回答 1

0

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

于 2012-09-27T13:48:15.850 回答