HttpClient 框架的简单封装

package com.example.utilsdemo.utils;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

public class HttpUtils {

//对最后需要的处理的结果进行回调处理
public OnResponseListener mListener;

//构造方法实现监听接口 处理返回的结果
public HttpUtils(OnResponseListener listener){
    this.mListener = listener;
}
//回调接口 成功返回json字符串 失败返回响应码errorcode
public interface OnResponseListener{
    void success(String result);
    void error(String error);
}

//reuquest请求 进行post请求 参数 url 请求参数的集合
public void request(List<BasicNameValuePair>    paramsList, String strUrl) {

    HttpPost request = new HttpPost(strUrl);
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    if(paramsList == null || paramsList.size() <= 0){
        return;
    }
    for(int i = 0; i < paramsList.size(); i++){
        params.add(paramsList.get(i));
    }

    String responseMsg = "";
    try {
        request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
        HttpClient client = HttpClientManager.getHttpClient();
        HttpResponse response = client.execute(request);
        if (response.getStatusLine().getStatusCode() == 200) {
            responseMsg = EntityUtils.toString(response.getEntity());
            mListener.success(responseMsg);

        }else{
            mListener.error(response.getStatusLine().getStatusCode()+"");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

}

//得到httpClient的Manager类
private static class HttpClientManager {
private static HttpClient customerHttpClient;
private static final int REQUEST_TIMEOUT = 5 * 1000;
private static final int SO_TIMEOUT = 5 * 1000;
private static final String CHARSET = HTTP.UTF_8;

    private HttpClientManager() {

    }

    public static  HttpClient getHttpClient2() {
        if (null == customerHttpClient) {
            BasicHttpParams httpParams = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParams,REQUEST_TIMEOUT);
            HttpConnectionParams.setSoTimeout(httpParams, SO_TIMEOUT);
            customerHttpClient = new DefaultHttpClient(httpParams);
        }
        return customerHttpClient;
    }

    public static synchronized HttpClient getHttpClient(){  
        if(customerHttpClient == null){  
            HttpParams params = new BasicHttpParams();  
            //设置基本参数  
            HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);  
            HttpProtocolParams.setContentCharset(params, CHARSET);  
            HttpProtocolParams.setUseExpectContinue(params, true);  
            //超时设置  
            /*从连接池中取连接的超时时间*/  
            ConnManagerParams.setTimeout(params, REQUEST_TIMEOUT);  
            /*连接超时*/  
            HttpConnectionParams.setConnectionTimeout(params, REQUEST_TIMEOUT);  
            /*请求超时*/  
            HttpConnectionParams.setSoTimeout(params, REQUEST_TIMEOUT);  
            //设置HttpClient支持HTTp和HTTPS两种模式  
            SchemeRegistry schReg = new SchemeRegistry();  
            schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));  
            schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));  
            //使用线程安全的连接管理来创建HttpClient  
            ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);  
            customerHttpClient = new DefaultHttpClient(conMgr, params);  
        }  
        return customerHttpClient;  
    } 
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值