java HTTP傳輸帶Cookie

  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;
    }

 

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