package com.xxx.common.util;

 import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils; public class HttpClientUtil { public static String doGet(String url, Map<String, String> param) {
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
String resultString = "";
CloseableHttpResponse response = null;
try {
// 创建uri
URIBuilder builder = new URIBuilder(url);
if (param != null) {
for (String key : param.keySet()) {
builder.addParameter(key, param.get(key));
}
}
URI uri = builder.build(); // 创建http GET请求
HttpGet httpGet = new HttpGet(uri); // 执行请求
response = httpclient.execute(httpGet);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == 200) {
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
} public static String doGet(String url) {
return doGet(url, null);
} public static String doPost(String url, Map<String, String> param) {
// 创建Httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
// 创建参数列表
if (param != null) {
List<NameValuePair> paramList = new ArrayList<>();
for (String key : param.keySet()) {
paramList.add(new BasicNameValuePair(key, param.get(key)));
}
// 模拟表单
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList, "utf-8");
httpPost.setEntity(entity);
}
// 执行http请求
response = httpClient.execute(httpPost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
} public static String doPost(String url) {
return doPost(url, null);
} /**
* 请求的参数类型为json
* @param url
* @param json
* @return
* {username:"",pass:""}
*/
public static String doPostJson(String url, String json) {
// 创建Httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
// 创建请求内容
StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);
// 执行http请求
response = httpClient.execute(httpPost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
}
}

最新文章

  1. 洛谷P1415 拆分数列[序列DP 状态 打印]
  2. easyUi load方法重新加载表单的数据
  3. C++内存分配及变长数组的动态分配
  4. Android ScrollView中的组件设置android:layout_height=&quot;fill_parent&quot;不起作用的解决办法
  5. sqlplus使用(一)
  6. Hive 实现HBase 数据批量插入
  7. 【转】Spring 获取web根目录 (Spring线程获取web目录/路径/根目录,普通类获取web目录)
  8. 一些代码 II (ConfigParser、创建大文件的技巧、__getattr__和__getattribute__、docstring和装饰器、抽象方法)
  9. benchmark pm2的cluster模式发布web app的性能与相关问题解决方法
  10. 如何改进iOS App的离线使用体验
  11. svn服务器配置
  12. VC下载文件显示进度条
  13. 对发给Application.Handle消息的三次执行(拦截)消息的过程
  14. easyui datagrid自定义操作列
  15. Python学习总结 11 使用tempest测试OpenStack
  16. Android 开发 Activity里获取View的宽度和高度 转载
  17. LR 两种html与url录制
  18. SQL Server2012远程访问第二个实列
  19. 如何查看Ubuntu版本,以及Linux内核版本??
  20. SpringBoot 使用Hikaricp连接池

热门文章

  1. [ USACO 2013 OPEN ] Photo
  2. eclipse debug java 源码
  3. js基础盲点
  4. CentOS 7 配置本地yum 源
  5. css 样式通用样式
  6. HTML5小時鐘
  7. 多线程下单例模式的实现_ThreadLocal_ReentrantLock
  8. pom.xml配置引用项目时不生效
  9. 一、认识spring框架
  10. linux 批量修改文件名 文件名只保留部分,去掉部分