两种发送HTTP请求方式

HTTPClient发送:

public class HttpClientUtil {
private static final String CHARSET = "GBK";
private static final Integer CONNECTION_TIMEOUT = 30000;//连接超时时间,30秒
private static final Integer SO_TIMEOUT = 90000;//等待数据超时时间,90秒
private static final Long CONN_MANAGER_TIMEOUT = 500L;//连接不够用的时候等待超时时间,一定要设置,而且不能太大
private static HttpClient httpclient;

/**
* 构造函数
*/
private HttpClientUtil() {
}


/**
* 创建线程安全的HttpClient

* @return
*/
public static synchronized HttpClient getHttpClient() {
if (httpclient == null) {
HttpParams params = new BasicHttpParams();
params.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT);//连接超时时间
params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT);//请求超时时间
params.setLongParameter(ClientPNames.CONN_MANAGER_TIMEOUT, CONN_MANAGER_TIMEOUT);//取连接超时时间
params.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, CHARSET);//编码方式
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
// params.setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);//
params.setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, true);//在提交请求之前测试连接是否可用

// 设置我们的HttpClient支持HTTP和HTTPS两种模式
SchemeRegistry schReg = new SchemeRegistry();
schReg.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
schReg.register(new Scheme("https", SSLSocketFactory
.getSocketFactory(), 443));


// 使用线程安全的连接管理来创建HttpClient
ThreadSafeClientConnManager conMgr = new ThreadSafeClientConnManager(schReg);
conMgr.setMaxTotal(200);//设置整个连接池最大连接数
//路由的默认最大连接(该值默认为2),设置过小无法支持大并发(ConnectionPoolTimeoutException: Timeout waiting for connection from pool),
conMgr.setDefaultMaxPerRoute(conMgr.getMaxTotal());//(目前只有一个路由,因此让他等于最大值)
httpclient = new DefaultHttpClient(conMgr, params);
}
return httpclient;
}

/**
* 发送Post请求

* @param url
* @param params
*            参数
* @return
*/
public static String sendPostRequest(String url, String reqData) {
String retuStr = null;
HttpResponse response = null;
try {
StringEntity entity = new StringEntity(reqData, CHARSET);
// 创建POST请求
HttpPost request = new HttpPost(url);
request.setEntity(entity);
// 发送请求
HttpClient client = getHttpClient();
// 服务器响应
response = client.execute(request);
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
throw new RuntimeException("请求失败");
}
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
retuStr = EntityUtils.toString(resEntity, CHARSET);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return retuStr;

}


HRLConnection方式:

public class HttpUtil {


/**

*/
public HttpUtil() {
super();
// TODO Auto-generated constructor stub
}




/**
* @Description: 发送http请求
* @param requestUrl
* @param requestMethod
* @param reqMap
* @param charSet
* @return
* @Author:shijunwang
*/
public static String httpReq(String requestUrl,
String requestMethod, Map reqMap, String charSet) {
//返回响应信息
String reStr = "";
try {
URL url = new URL(requestUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置请求参数是否放在http正文中,默认false
conn.setDoOutput(true);
// 设置是否从httpUrlConnection读入,默认情况下是true;
conn.setDoInput(true);
// Post 请求不能使用缓存
conn.setUseCaches(false);
//连接超时时间:设为30秒
conn.setConnectTimeout(30000);
//http请求参数
String param = buildPara(reqMap);
//请求方法
conn.setRequestMethod(requestMethod);
if (null != param) {
OutputStream outputStream = conn.getOutputStream();
outputStream.write(param.getBytes(charSet));
outputStream.close();
}

StringBuffer buffer = new StringBuffer();
int retuCode = conn.getResponseCode();
if (retuCode==HttpURLConnection.HTTP_OK) {//连接成功
InputStream inputStream = conn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream, charSet);
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String str = null;

while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
inputStream = null;
}


conn.disconnect();
reStr = buffer.toString();
} catch (Exception e) {
System.out.println("http请求发生异常:{" + e + "}");
}
return reStr;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值