HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
在这里先介绍 HttpClient的xml ,json和form表单格式的调用;对不同格式的可进行封装调用
public class HttpUtils {
private static Logger Log = LoggerFactory.getLogger(HttpUtils.class);
// 1.使用get方式发送报文
public static String getData(String url) {
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
try{
CloseableHttpResponse response = client.execute(get);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode==200){
Log.info("远程调用成功.line={}",response.getStatusLine());
HttpEntity entity = response.getEntity();
return EntityUtils.toString(entity,"UTF-8");
}
return null;
}catch (IOException e){
Log.error("远程调用失败.e={}",e.getMessage());
}
return null;
}
public static String post(String type,String url,String data){
String result = "";
switch (type){
case "xml":
result = postData(url,data,ContentType.APPLICATION_XML.toString());
break;
case "json":
result = postData(url,data,ContentType.APPLICATION_JSON.toString());
break;
default:
break;
}
return result;
}
// 使用POST方法发送XML或者json数据
public static String postData(String url, String xmlData,String contentType){
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
post.addHeader("Content-type",contentType);
try{
StringEntity entity = new StringEntity(xmlData);
post.setEntity(entity);
CloseableHttpResponse response = client.execute(post);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode==200){
Log.info("远程调用成功.line={}",response.getStatusLine());
HttpEntity responseEntity = response.getEntity();
return EntityUtils.toString(responseEntity);
}
}catch (IOException e){
Log.error("远程调用失败.e={}",e.getMessage());
}
return null;
}
// 使用POST方法发送FORM表单数据
public static String postForm(String url, Map<String,String> map){
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
post.addHeader("Content-type",ContentType.APPLICATION_FORM_URLENCODED.toString());
try{
List<BasicNameValuePair> list = new ArrayList<>();
for(Map.Entry<String,String> entry : map.entrySet()){
list.add(new BasicNameValuePair(entry.getKey(),entry.getValue()));
}
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(list);
post.setEntity(urlEncodedFormEntity);
CloseableHttpResponse response = client.execute(post);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode==200){
Log.info("远程调用成功.line={}",response.getStatusLine());
HttpEntity responseEntity = response.getEntity();
return EntityUtils.toString(responseEntity);
}
}catch (IOException e){
Log.error("远程调用失败.e={}",e.getMessage());
}
return null;
}
}
网友评论