首先需要说明,HttpClient4.X支持JDK1.5及以上,HttpClient3.X支持1.5以下的。
4.X和3.X的区别在于4.X的HttpClient是一个接口,3.X的HttpClient是一个类,4.X更多的是基于接口的实现方式。
4.X需要jar: httpclient-4.5.3.jar httpcore-4.4.6.jar
3.X需要jar: commons-httpclient-3.1.jar httpcore-4.0.1.jar
4.X的实现方式
CloseableHttpClient client = HttpClients.createDefault(); //和3.X最大的区别
HttpPost post = new HttpPost(url);//传送数据的目标URL
String result ="";
try {
StringEntity s = new StringEntity(body);//body是需要传送的数据,json字符串
s.setContentEncoding("UTF-8");
s.setContentType("application/json");
post.setEntity(s);
if(!token.equals("")) {
post.setHeader("Authorization",token);//身份验证,根据业务需求会变
}
CloseableHttpResponse res = client.execute(post);
//状态码200,发送成功
if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = res.getEntity();
result = EntityUtils.toString(entity);
}
} catch (Exception ex) {
result = "";
}
3.X的实现方式
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);//传送数据的目标URL
String result ="";
try {
if(!token.equals("")) {
method.setRequestHeader("Authorization",token);//身份验证,根据业务需求会变
}
RequestEntity requestEntity = new StringRequestEntity(body.toString(), "application/json", "UTF-8");//body是需要传送的数据,json字符串
method.setRequestEntity(requestEntity);
int statusCode = client.executeMethod(method);
//状态码200,发送成功
if (statusCode == HttpStatus.SC_OK) {
result = method.getResponseBodyAsString();
}
} catch (Exception ex) {
result = "";
}