0

Web サービスに REST を使用しています。これが私が使用しているサンプルのGETリクエストです。私のコードには非常に多くの GET メソッド、Post メソッドがあります。ヘッダーに追加するAUTH TOKENが欠落していないことを確認するために、これらのメソッドを一般化する必要があります。

このコードを一般化するにはどうすればよいですか? いくつかのクラスを拡張することによって、それを行う方法。

私の意図は、HTTP ヘッダーをコードに一度入れて、どこでも再利用することです。

これに関する標準的な慣行は何ですか?または、現在の方法は問題ないように見えますか? 専門家のアドバイスを期待しています。前もって感謝します。

私の現在のコード:

    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();


    HttpGet httpGet = new HttpGet(SystemConstants.CUSTOMER_SUMMARY_URL
            + "mobile=" + mCreditMobileNumber + "&businessid="
            + mBusinessId);

    httpGet.addHeader("Authorization", mAuthToken);

    GetClientSummaryResponse summaryResponse = null;

    try {
        HttpResponse response = client.execute(httpGet);

        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) {
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(content));

            Gson gson = new Gson();

            summaryResponse = gson.fromJson(reader,
                    GetClientSummaryResponse.class);



        } else {
            Log.e(TAG, "Failed to download file");
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    }
4

2 に答える 2

0

HttpGet オブジェクトの作成を処理し、それを返すだけの一種のユーティリティ クラスを作成します。以下に書いたような感じです。

public class MyHttpUtility
{
    public HttpGet createHttpGet( String mAuthToken, String mCreditMobileNumber, mBusinessId )
    {
        HttpGet httpGet = new HttpGet(SystemConstants.CUSTOMER_SUMMARY_URL
            + "mobile=" + mCreditMobileNumber + "&businessid="
            + mBusinessId);
        httpGet.addHeader( "Authenticate", mAuthToken );
        return httpGet;
    }       
}

そうすれば、リクエストが必要なときはいつでも、さまざまな場所でコードを複製するのではなく、常に 1 つの中心的な場所で構築されていることがわかります。

MyHttpUtility httpUtil = new MyHttpUtility();
HttpGet httpGet = httpUtil.createHttpGet( "token", "ccmobile", "businessid" );
HttpResponse response = client.execute(httpGet);
// ... and the rest of the response logic
于 2013-07-17T05:24:39.630 に答える