推广休息电话

时间:2013-07-17 04:57:42

标签: java android rest

我正在使用REST作为我的Web服务。 这是我正在使用的示例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();
    }

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我应该首先说我对android也很新,最近为我开始的一个项目做了一些事情,但还没有完成。 API部分相当完整,可以适应大多数其他API。我专门构建了它,它提供了回调来自API的响应接口的方法。这是代码http://ftp-ns-drop.com/stack/api.zip的链接,包含的是我的一项名为LoginActivity的活动。我把它包括在内,这样你就可以看到如何调用api调用以及它们是如何被接收的。

继承我的班级结构。

APIClient - 这个类包含我创建api调用的所有方法,如login(用户名,密码,回调),当前会话的凭据和HTTPClient。

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

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

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