HTTP客户端操作工具类

本文介绍了一个用于Android平台的异步HTTP客户端工具类,该工具类提供了多种发送GET和POST请求的方法,并支持参数填充、文件上传等功能。此外,还实现了网络状态检查、请求取消等实用功能。

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


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;


import org.apache.http.Header;
import org.apache.http.HttpEntity;


import android.content.Context;


import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.RequestParams;
import com.loopj.android.http.ResponseHandlerInterface;
import com.zftlive.android.MApplication;


/**
 * HTTP客户端操作工具类
 * @version 1.0
 *
 */
public abstract class ToolHTTP {


/**异步的HTTP客户端实例**/
protected static AsyncHttpClient client = new AsyncHttpClient();

/**默认字符集**/
public static String DEFAULT_CHARSET = "UTF-8";


/**
* 模拟GET表单(无参数)
* @param url 请求URL
* @param responseHandler 回调Handler(BinaryHandler/JSONHandler/JSONArrayHandler/TextHttpResponseHandler)
*/
public static void get(String url, ResponseHandlerInterface responseHandler) {
if(checkNetwork()){
//关闭过期连接.
   client.getHttpClient().getConnectionManager().closeExpiredConnections();
client.get(url, responseHandler);
}
}

/**
* 模拟GET表单(有参数)
* @param url 请求URL
* @param parmsMap 参数
* @param responseHandler 回调Handler(BinaryHandler/JSONHandler/JSONArrayHandler/TextHttpResponseHandler)
*/
public static void get(String url, Map<String,?> parmsMap, ResponseHandlerInterface responseHandler,String... charset) {
if(checkNetwork()){
//关闭过期连接.
   client.getHttpClient().getConnectionManager().closeExpiredConnections();
   if(null != charset && charset.length > 0){
    DEFAULT_CHARSET = charset[0];
   }
client.get(url, fillParms(parmsMap,DEFAULT_CHARSET), responseHandler);
}
}

/**
* 模拟GET表单(有参数)
* @param context 上下文
* @param url 请求URL
* @param parmsMap 参数
* @param responseHandler 回调Handler(BinaryHandler/JSONHandler/JSONArrayHandler/TextHttpResponseHandler)
*/
public static void get(Context context,String url,Map<String,?> parmsMap,ResponseHandlerInterface responseHandler,String... charset) {
if(checkNetwork()){
//关闭过期连接.
   client.getHttpClient().getConnectionManager().closeExpiredConnections();
   if(null != charset && charset.length > 0){
    DEFAULT_CHARSET = charset[0];
   }
client.get(context, url, fillParms(parmsMap,DEFAULT_CHARSET), responseHandler);
}
}

/**
* 模拟POST表单(无参数)
* @param url 请求URL
* @param responseHandler 回调Handler(BinaryHandler/JSONHandler/JSONArrayHandler/TextHttpResponseHandler)
*/
public static void post(String url, ResponseHandlerInterface responseHandler) {
if(checkNetwork()){
//关闭过期连接.
   client.getHttpClient().getConnectionManager().closeExpiredConnections();
client.post(url, responseHandler);
}
}

/**
* 模拟POST表单(有参数)
* @param url 请求URL
* @param parmsMap 参数
* @param responseHandler 回调Handler(BinaryHandler/JSONHandler/JSONArrayHandler/TextHttpResponseHandler)
*/
public static void post(String url, Map<String,?> parmsMap, ResponseHandlerInterface responseHandler,String... charset) {
if(checkNetwork()){
//关闭过期连接.
   client.getHttpClient().getConnectionManager().closeExpiredConnections();
   if(null != charset && charset.length > 0){
    DEFAULT_CHARSET = charset[0];
   }
client.post(url, fillParms(parmsMap,DEFAULT_CHARSET), responseHandler);
}
}

/**
* 模拟POST表单(有参数)
* @param context 上下文
* @param url 请求URL
* @param parmsMap 参数
* @param responseHandler 回调Handler(BinaryHandler/JSONHandler/JSONArrayHandler/TextHttpResponseHandler)
*/
public static void post(Context context,String url,Map<String,?> parmsMap,ResponseHandlerInterface responseHandler,String... charset) {
if(checkNetwork()){
//关闭过期连接.
   client.getHttpClient().getConnectionManager().closeExpiredConnections();
   if(null != charset && charset.length > 0){
    DEFAULT_CHARSET = charset[0];
   }
client.post(context, url, fillParms(parmsMap,DEFAULT_CHARSET), responseHandler);
}
}

/**
* 模拟提交POST表单(无参数)
* @param context 上下文
* @param url 请求URL
* @param entity 请求实体,可以null
* @param contentType 表单contentType ("multipart/form-data")
* @param responseHandler 回调Handler(BinaryHandler/JSONHandler/JSONArrayHandler/TextHttpResponseHandler)
*/
public static void post(Context context,String url,HttpEntity entity, String contentType,ResponseHandlerInterface responseHandler) {
if(checkNetwork()){
//关闭过期连接.
   client.getHttpClient().getConnectionManager().closeExpiredConnections();
client.post(context, url, entity, contentType, responseHandler);
}
}

/**
* 模拟提交POST表单(有参数)
* @param context 上下文
* @param url 请求URL
* @param headers 请求Header
* @param parmsMap 参数
* @param contentType 表单contentType ("multipart/form-data")
* @param responseHandler 回调Handler(BinaryHandler/JSONHandler/JSONArrayHandler/TextHttpResponseHandler)
*/
public static void post(Context context,String url,Header[] headers, Map<String,?> parmsMap, String contentType,ResponseHandlerInterface responseHandler,String... charset) {
if(checkNetwork()){
//关闭过期连接.
   client.getHttpClient().getConnectionManager().closeExpiredConnections();
   if(null != charset && charset.length > 0){
    DEFAULT_CHARSET = charset[0];
   }
client.post(context, url, headers, fillParms(parmsMap,DEFAULT_CHARSET), contentType, responseHandler);
}
}


/**
* 装填参数
* @param map 参数
* @return 
*/
public static RequestParams fillParms(Map<String,?> map,String charset) {
RequestParams params = new RequestParams();
if(null != map && map.entrySet().size() > 0)
{
//设置字符集,防止参数提交乱码
if(!"".equals(charset)){
params.setContentEncoding(charset);
}
for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) 
{
Entry entity = (Entry) iterator.next();
Object key = entity.getKey();
Object value = entity.getValue();
if (value instanceof File) {
try {
params.put((String) key, new FileInputStream((File) value),((File) value).getName());
} catch (FileNotFoundException e) {
throw new RuntimeException("文件不存在!", e);
}
} else if (value instanceof InputStream) {
params.put((String) key, (InputStream) value);
} else {
params.put((String) key, value.toString());
}
}
}
return params;
}

/**
* 检测网络状态
* @return 网络是否连接
*/
public static boolean checkNetwork(){
boolean isConnected = MApplication.isNetworkReady();
if(isConnected){
return true;
}else{
ToolAlert.toastShort("网络连接失败");
return false;
}
}

/**
* 停止请求
* @param mContext 发起请求的上下文
*/
public static void stopRequest(Context mContext){
client.cancelRequests(mContext, true);
}

/**
* 停止全部请求
*/
public static void stopAllRequest(){
client.cancelAllRequests(true);
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值