HTTP傳輸帶Cookie的方式
/**
* HTTP GET請求 帶 cookie
* @param url 請求地址
* @return 響應字符串
*/
public static String doGet(String url,Map<String,String> cookie) {
CloseableHttpClient httpClient = null;
CloseableHttpResponse response = null;
String result = "";
try {
// 通過址默認配置創建一個httpClient實例
httpClient = HttpClients.createDefault();
// 創建httpGet遠程連接實例
HttpGet httpGet = new HttpGet(url);
// 設置請求頭信息,鑑權
httpGet.setHeader("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
StringBuffer cookieStr = new StringBuffer();
Iterator<Entry<String,String>> iterator = cookie.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String,String> next = iterator.next();
cookieStr.append(next.getKey()).append("=").append(next.getValue()).append(";");
}
if(cookieStr.length() > 0) {
cookieStr.setLength(cookieStr.length() - 1);
}
// cookie字符串的格式:key=value; Expires=date(或Max-Age=毫秒數); Path=path; Domain=domain; Secure; HttpOnly
httpGet.addHeader("Cookie", cookieStr.toString());
// 設置配置請求參數
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 連接主機服務超時時間
.setConnectionRequestTimeout(35000)// 請求超時時間
.setSocketTimeout(60000)// 數據讀取超時時間
.build();
// 爲httpGet實例設置配置
httpGet.setConfig(requestConfig);
// 執行get請求得到返回對象
response = httpClient.execute(httpGet);
// 通過返回對象獲取返回數據
HttpEntity entity = response.getEntity();
// 通過EntityUtils中的toString方法將結果轉換爲字符串
result = EntityUtils.toString(entity);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 關閉資源
if (null != response) {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != httpClient) {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}