HttpClient 傳入代理IP和端口則走代理,不傳則直接請求的兩個方法

 HttpClient 傳入代理IP和端口則走代理,不傳則直接請求的兩個方法

 

方法使用的相關包

import com.ifunpay.util.common.StringUtil;
import net.sf.json.JSONObject;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

代碼實現如下

public static String httpGetRequest(String url ,String proxyIp,int port,Map<String,Object> paramsMap,String encoding) throws  Exception{
        //創建httpclient對象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //設置參數
        String params = null;
        if (paramsMap !=null){
            List<BasicNameValuePair> list = new ArrayList();
            Iterator iterator = paramsMap.entrySet().iterator();
            while(iterator.hasNext()){
                Map.Entry<String,String> elem = (Map.Entry<String, String>) iterator.next();
                list.add(new BasicNameValuePair(elem.getKey(),String.valueOf(elem.getValue())));
            }
            //轉化參數
            params = EntityUtils.toString(new UrlEncodedFormEntity(list, encoding));
        }
        //創建請求方法的實例, 並指定請求url
        HttpGet httpGet = new HttpGet(url+"?"+params);
        RequestConfig config ;
        if (StringUtil.isNotEmpty(proxyIp) && port>0){
            //代理對象
            HttpHost proxy = new HttpHost(proxyIp, port, "http");
            //配置對象
            config = RequestConfig.custom().setProxy(proxy).build();
            //使用配置
            httpGet.setConfig(config);
        }
        CloseableHttpResponse response=httpClient.execute(httpGet);
        HttpEntity entity=response.getEntity();
        String content=EntityUtils.toString(entity, "utf-8");
        log.info("httpGetRequestResultString:"+content);
        httpClient.close();
        return  content;
    }

    public static String httpPostRequest(String url ,String proxyIp,int port,Map<String,Object> paramsMap, String encoding) throws  Exception{
        //創建httpclient對象
        CloseableHttpClient httpClient = HttpClients.createDefault();

        //創建請求方法的實例, 並指定請求url
        HttpPost httpPost = new HttpPost(url);
        //設置參數
        if (paramsMap !=null){
            List<BasicNameValuePair> list = new ArrayList();
            Iterator iterator = paramsMap.entrySet().iterator();
            while(iterator.hasNext()){
                Map.Entry<String,String> elem = (Map.Entry<String, String>) iterator.next();
                list.add(new BasicNameValuePair(elem.getKey(),String.valueOf(elem.getValue())));
            }
            if(list.size() > 0){
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,encoding);
                httpPost.setEntity(entity);
            }
        }
        RequestConfig config ;
        if (StringUtil.isNotEmpty(proxyIp) && port>0){
            //代理對象
            HttpHost proxy = new HttpHost(proxyIp, port, "http");
            //配置對象
            config = RequestConfig.custom().setProxy(proxy).build();
            //使用配置
            httpPost.setConfig(config);
        }
        CloseableHttpResponse response=httpClient.execute(httpPost);
        HttpEntity entity=response.getEntity();
        String content=EntityUtils.toString(entity, "utf-8");
        log.info("httpPostRequestResultString:"+content);
        httpClient.close();
        return  content;

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章