通常の Java プロジェクトで REST サービスを使用していますが、正常に動作します。私が今やりたいことは、Android アプリで同じサービスを使用することです (そして、c の同じ結果を得ます)。
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);