0

通常の 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);
4

1 に答える 1

0

Android アプリは Java 上で実行されます。したがって、理論的には、コードをそのまま Android アプリで使用でき、多くの変更を加える必要はありません。ただし、Android では、すべてのネットワーク/インターネット作業を別のスレッドで行う必要があります。Android アプリは、通常の Java プログラムとは異なる方法でコンパイルされます。そのため、Android プラグインを使用してコードを Eclipse にロードし、Android プロジェクトとしてビルド/コンパイルする必要があります。コードをあまり変更しなくても、これを達成できるはずです。コードの一部に問題がある場合は、スタック トレースの LogCat を調べてみてください。これにより、問題がどこにあるかについて有利なスタートを切ることができます

于 2012-09-27T13:48:15.850 に答える