技术实现之http请求封装

本文详细介绍了在项目中对HTTP请求的封装过程,包括接口调用方式、封装的底层基类、具体封装类的实现,以及接口调用实例。通过封装,简化了单个接口的实现,提高了代码可读性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        前面的2篇文章对现有工作项目进行了一个简要的介绍,从这篇文章开始,将会对现在项目中用到的开发模式进行详细的总结和概括。


如题,本篇文章将总结项目中http请求的封装。


       由于公司的api接口的特殊设计的缘故,为了使得在开发的工程中不至于浪费太多的时间在http请求编写上,所以我对http请求进行了封装。


1、接口的调用方式

curl http://192.168.1.23:9000/dataSearch -H "Content-Type:application/json;charset:utf-8" -d '{"ReqHeader":{"appId" : "257741","appVersion" : "0.1","deployId" : "257741","sessionId" : "1234567890","appKey" : "1cc201ee-a182-9d1b-8d94-ce1f3dec0661","uHelpVer" : "1.2","reqTime" : "2013-08-21 09:00:00"},"action":"littleGameImeiLogin","params":{"imei":"121231.com","lat":31.24312312,"lon":121.50912342}}'

     所有的api接口都有一个公共的入口  http://192.168.1.23:9000/dataSearch , ReqHeader部分是特殊的格式,基本上是固定的,而各个接口之间是通过其中的 action参数来进

分的,而params则表示客户端部分需要向服务端传递的参数,可以理解为get请求中?后面的参数集合。而返回的格式如下

 {
<span style="white-space:pre">	</span>"RespHeader": {
<span style="white-space:pre">	</span>    "hostId": null,
<span style="white-space:pre">	</span>    "result": "success",
<span style="white-space:pre">	</span>    "errorCode": "0",
<span style="white-space:pre">	</span>    "errorNote": "成功",
<span style="white-space:pre">	</span>    "respTime": "2014-06-30 10:43:03"
<span style="white-space:pre">	</span>},
       "RespBody": {
<span style="white-space:pre">	</span>    "rtnCode": 0
<span style="white-space:pre">	</span>}
}

其中  RespHeader是头部信息,客户端调用成功与否是通过 RespBody中的rtnCode字段来进行判断的,0表示成功,其余的都表示失败。


2http请求的封装底层基类

客户端的http请求是采用AsynTask来调用的,所有的http请求都有一个公共的基类DataSearchApiCallAsynTask,代码如下

package com.uwen.melo.themonkey.http;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.AsyncTask;
import android.util.Log;

import com.uwen.melo.themonkey.common.ActionConstant;
import com.uwen.melo.themonkey.model.common.BasicJsonVo;
import com.uwen.melo.themonkey.util.CommonUtil;

public class DataSearchApiCallAsynTask extends
		AsyncTask<String, Integer, String> {
	private OnDataSearchApiCompleted listener;
	private String action;
	private Map<String, Object> params;
	// private String result;
	HttpClient httpclient;

	public DataSearchApiCallAsynTask(OnDataSearchApiCompleted listener,
			String action, Map<String, Object> params) {
		this.listener = listener;
		this.action = action;
		this.params = params;
	}

	protected void onProgressUpdate(Integer... progress) {
		// update progress here
	}

	@Override
	protected String 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值