java HttpClient工具類 jdk1.6可適應


//大家可根據自己需求調用里面的方法 轉發 

//必導入架包 需要可找http://four.haser.top/

 

 

package com.hr.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;

/**
* Http工具類
* 
* Http工具類,為系統提供通用Http訪問操作方法:
* 
* 1、發送GET請求; 2、發送POST請求。
* 
*/
public class HttpUtil {

/**
* 發送GET請求
* 
* @param url
* GET請求地址
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doGet(String url) {

return HttpUtil.doGet(url, null, null, 0);
}

/**
* 發送GET請求
* 
* @param url
* GET請求地址
* @param headerMap
* GET請求頭參數容器
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doGet(String url, Map headerMap) {
return HttpUtil.doGet(url, headerMap, null, 0);
}

/**
* 發送GET請求
* 
* @param url
* GET請求地址
* @param proxyUrl
* 代理服務器地址
* @param proxyPort
* 代理服務器端口號
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doGet(String url, String proxyUrl, int proxyPort) {
return HttpUtil.doGet(url, null, proxyUrl, proxyPort);
}

/**
* 發送GET請求
* 
* @param url
* GET請求地址
* @param headerMap
* GET請求頭參數容器
* @param proxyUrl
* 代理服務器地址
* @param proxyPort
* 代理服務器端口號
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doGet(String url, Map headerMap, String proxyUrl, int proxyPort) {

byte[] content = null;
HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod(url);

if (headerMap != null) {
// 頭部請求信息
if (headerMap != null) {

Iterator iterator = headerMap.entrySet().iterator();
while (iterator.hasNext()) {
Entry entry = (Entry) iterator.next();
getMethod.addRequestHeader(entry.getKey().toString(), entry.getValue().toString());
}
}
}

if (StringUtils.isNotBlank(proxyUrl)) {
httpClient.getHostConfiguration().setProxy(proxyUrl, proxyPort);
}

// 設置成了默認的恢復策略,在發生異常時候將自動重試3次,在這里你也可以設置成自定義的恢復策略
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 10000);
InputStream inputStream = null;
try {
if (httpClient.executeMethod(getMethod) == HttpStatus.SC_OK) {
// 讀取內容
inputStream = getMethod.getResponseBodyAsStream();
content = IOUtils.toByteArray(inputStream);
} else {
System.err.println("Method failed: " + getMethod.getStatusLine());
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
IOUtils.closeQuietly(inputStream);
getMethod.releaseConnection();
}
return content;
}

/**
* 發送POST請求
* 
* @param url
* POST請求地址
* @param parameterMap
* POST請求參數容器
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doPost(String url, Map parameterMap) {
return HttpUtil.doPost(url, null, parameterMap, null, null, 0);
}

/**
* 發送POST請求
* 
* @param url
* POST請求地址
* @param parameterMap
* POST請求參數容器
* @param paramCharset
* 參數字符集名稱
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doPost(String url, Map parameterMap, String paramCharset) {
return HttpUtil.doPost(url, null, parameterMap, paramCharset, null, 0);
}

/**
* 發送POST請求
* 
* @param url
* POST請求地址
* @param headerMap
* POST請求頭參數容器
* @param parameterMap
* POST請求參數容器
* @param paramCharset
* 參數字符集名稱
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doPost(String url, Map headerMap, Map parameterMap, String paramCharset) {
return HttpUtil.doPost(url, headerMap, parameterMap, paramCharset, null, 0);
}

/**
* 發送POST請求
* 
* @param url
* POST請求地址
* @param parameterMap
* POST請求參數容器
* @param paramCharset
* 參數字符集名稱
* @param proxyUrl
* 代理服務器地址
* @param proxyPort
* 代理服務器端口號
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doPost(String url, Map parameterMap, String paramCharset, String proxyUrl, int proxyPort) {
return HttpUtil.doPost(url, null, parameterMap, paramCharset, proxyUrl, proxyPort);
}

/**
* 發送POST請求
* 
* @param url
* POST請求地址
* @param headerMap
* POST請求頭參數容器
* @param parameterMap
* POST請求參數容器
* @param paramCharset
* 參數字符集名稱
* @param proxyUrl
* 代理服務器地址
* @param proxyPort
* 代理服務器端口號
* 
* @return 與當前請求對應的響應內容字節數組
* 
*/
public static byte[] doPost(String url, Map headerMap, Map parameterMap, String paramCharset, String proxyUrl,
int proxyPort) {
byte[] content = null;
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(url);

//請求參數編碼 默認UTF-8
if (StringUtils.isBlank(paramCharset)) {
paramCharset = "UTF-8";
}

postMethod.getParams().setContentCharset(paramCharset);
postMethod.getParams().setHttpElementCharset(paramCharset);

if (headerMap != null) {
// 頭部請求信息
if (headerMap != null) {
Iterator iterator = headerMap.entrySet().iterator();
while (iterator.hasNext()) {
Entry entry = (Entry) iterator.next();
postMethod.addRequestHeader(entry.getKey().toString(), entry.getValue().toString());
}
}
}

Iterator iterator = parameterMap.keySet().iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
postMethod.addParameter(key, (String) parameterMap.get(key));
}
if (StringUtils.isNotBlank(proxyUrl)) {
httpClient.getHostConfiguration().setProxy(proxyUrl, proxyPort);
}

// 設置成了默認的恢復策略,在發生異常時候將自動重試3次,在這里你也可以設置成自定義的恢復策略
postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 10000);
InputStream inputStream = null;
try {
if (httpClient.executeMethod(postMethod) == HttpStatus.SC_OK) {
// 讀取內容
inputStream = postMethod.getResponseBodyAsStream();
content = IOUtils.toByteArray(inputStream);
} else {
System.err.println("Method failed: " + postMethod.getStatusLine());
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
IOUtils.closeQuietly(inputStream);
postMethod.releaseConnection();
}
return content;
}

public static void main(String[] args) {
//	Map<String, String> map = new HashMap<String, String>();
//	map.put("wd", "nima");
//	byte[] b = doGet("http://www.baidu.com", map);
//	System.out.println("-------------------" + new String(b));

//	Map<String, String> map = new HashMap<String, String>();
//	map.put("name", "123456789");
//	map.put("password", "123456");
//	byte[] b = doPost("http://www.lwchen.cn/work/doLogin", map);
//	System.out.println("-------------------" + new String(b));
char a = 24742;
System.out.println(a);
}

}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM