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