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;
    }       
}

这样,每当我需要一个请求时,我就知道它总是在一个中心位置构建,而不是在一堆不同的地方复制代码。

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 回答
0

我应该首先说我对 android 也很陌生,并且最近为我开始但还没有完成的项目编造了一些东西。API 部分相当完整,可以适应大多数其他 API。我专门围绕为 API 的接口发布响应提供回调方法来构建它。这是代码http://ftp-ns-drop.com/stack/api.zip的链接,其中包括我的一个名为 LoginActivity 的活动。我将其包含在内,以便您可以看到如何调用 api 调用以及如何接收它们。

这是我的班级结构。

APIClient - 这个类包含了我所有的用于创建 api 调用的方法,比如登录名(用户名、密码、回调)、我们当前会话的凭证和我们的 HTTPClient。

APITask - 实际的 AsyncTask ( http://developer.android.com/reference/android/os/AsyncTask.html ) 处理我们的 http 请求的执行,然后将结果传回给我们的 APIClient。异步任务对于允许 GUI 线程在处理请求时继续执行当然很重要。

APICallback - 可以使用注释添加到任何类的接口,然后在发出请求时将该类传递给 APIClient,然后一个方法用作 API 的回调。(注意:我把它作为一个注释接口不是因为它必须是,而是因为我想要一个使用注释的借口:),把它做成一个接口可能更有意义)

JSONResponse - 任何 API 调用的响应,包含 HTTP 请求、HTTP 响应和数据响应,这被传递回 APICallback 定义的回调方法。

于 2013-07-17T05:36:25.297 回答