我正在使用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();
}
答案 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定义的回调方法。