1. 程式人生 > >Httpclient重寫post和get方式連線伺服器

Httpclient重寫post和get方式連線伺服器

package com.cetron.common.utils.Http;

import com.google.gson.Gson;

import org.apache.http.HttpEntity;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.config.RequestConfig;

import org.apache.http.client.entity.UrlEncodedFormEntity;

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.entity.StringEntity;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import

org.apache.http.util.EntityUtils;

import org.apache.log4j.Logger;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.util.*;

/**

*  HttpClient 4

* */

public class HttpClient {

 //日記記錄(日誌記錄工具類在此不提供)

    static final Logger log= Logger.getLogger(HttpClient.class);

private static  CloseableHttpClient httpClient

= null;

private static CloseableHttpResponse response = null;

private static  RequestConfigrequestConfig = null;

static {

       // 通過址預設配置建立一個httpClient例項

httpClient = HttpClients.createDefault();

requestConfig =RequestConfig.custom().setConnectTimeout(35000)// 設定連線主機服務超時時間

.setConnectionRequestTimeout(35000)// 設定連線請求超時時間

.setSocketTimeout(60000)// 設定讀取資料連線超時時間

.build();

}

    public static String doGet(Stringurl) {

       CloseableHttpResponse response = null;

String result ="";

try {

           HttpGet httpGet = new HttpGet(url);

httpGet.setConfig(requestConfig);

response = httpClient.execute(httpGet);

HttpEntityentity = response.getEntity();

result =EntityUtils.toString(entity);

} catch (ClientProtocolException e) {

           log.debug( "伺服器連接出現異常",e );

} catch (IOException e) {

           log.debug( "伺服器連接出現異常",e );

} catch (Exception e) {

           log.debug( "伺服器連接出現異常",e );

}finally {

           if (null !=response) {

                try{

                    response.close();

} catch (IOException e) {

                    log.debug("關閉伺服器連接出現異常",e );

}

           }

           if (null !=httpClient) {

                try{

                    httpClient.close();

} catch (IOException e) {

                    log.debug("關閉伺服器連接出現異常",e );

              }

           }

       }

       return result;

}

    public static String doPost(Stringurl, Object obj) {

       String result = "";

HttpPosthttpPost = new HttpPost(url);

httpPost.setConfig(requestConfig);

httpPost.addHeader("Content-Type","application/x-www-form-urlencoded");

try {

           HttpEntity entityParam = new StringEntity(new Gson().toJson( obj ),"UTF-8");

httpPost.setEntity(entityParam);

response = httpClient.execute(httpPost);

HttpEntityentity = response.getEntity();

result =EntityUtils.toString(entity);

} catch (ClientProtocolException e) {

           log.debug( "伺服器連接出現異常",e );

} catch (IOException e) {

           log.debug("伺服器連接出現異常",e );

} catch (Exception e) {

           log.debug( "伺服器連接出現異常",e );

} finally {

           // 關閉資源

if (null!= response) {

                try{

                    response.close();

  } catch (IOException e) {

                    log.debug("中轉伺服器連接出現異常",e );

}

           }

           if (null !=httpClient) {

                try{

                    httpClient.close();

} catch (IOException e) {

                    log.debug("中轉伺服器連接出現異常",e );

}

           }

       }

       return result;

}

}

 此程式碼僅供連線第三方伺服器使用,傳送請求到伺服器,請求在第三方伺服器處理,可以在分散式架構中當做通訊橋樑.僅供自己學習記錄使用