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