0

外部RESTfulサービスを使用するGoogle App EngineでWeb アプリを作成しています。少し調査した後、私はJerseyなどの JAX-RS API の代わりにjava.net.URLクラスのみを使用することを選択しました。これらの API には GAE との互換性の問題があるか、一部のバージョンとのみ互換性があるためです。に...そして、私はこの問題があまり好きではありません。

このチュートリアルに従って、REST サービスを呼び出すには、次のようにします。

URL url = new URL("rest-service-url");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//process the response...

次に、GAE と完全に互換性があるGoogle の GSONを使用して JSON 応答を処理します。

まず第一に、これは良い選択肢だと思いますか?

そして、このコードを何らかの方法で一元化したいと考えています。なぜなら、私のアプリにはさまざまなサービスへの呼び出しがあるためです。どうすればそれができるでしょうか? 次のようなメソッドでクラスを作成することを考えました:

public BufferedReader sendRESTRequest (URL url)
    //previous code here...        
}

しかし、よくわかりません...このメソッドは静的でなければなりませんか?同期?メソッド内またはクラス内で HttpURLConnection オブジェクトを作成する必要がありますか? 等...

ありがとう!

4

1 に答える 1

0

プロジェクトでApacheライブラリの使用が許可されている場合は、こちらをご覧ください。車輪の再発明をする理由

の線上の何か

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
private String poolTimeOutMillSecStr = System.getProperty("CONN_TIME_OUT_MILLSEC", "60000");

    private String maxTotalConnStr = System.getProperty("MAX_TOTAL_CONN", "400");

    private String maxConnPerRouteStr = System.getProperty("MAX_CONN_PER_ROUTE", "200");

    HttpUtility httpUtilty;

    private String baseUrl = System.getProperty("BASE_URL", "http://localhost:8888");

    private String userName;

    private String password;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        int poolTimeOutMillSec = Integer.parseInt(poolTimeOutMillSecStr);
        int maxTotalConn = Integer.parseInt(maxTotalConnStr);
        int maxConnPerRoute = Integer.parseInt(maxConnPerRouteStr);
        httpUtilty = new HttpUtility(poolTimeOutMillSec, maxTotalConn, maxConnPerRoute);
        httpUtilty.initialize(baseUrl);
        userName = "admin";
        password = "admin";

    }
}

そしてそれを次のように使用する

HttpResponse response = httpUtilty.postRequest(path, null, ins, null);
HttpEntity resEntity = response.getEntity();
于 2013-03-10T21:58:34.740 に答える