https请求

@Slf4j
public class HttpPostUtils {public static int RESPONSE_STATUS_OK = 0;public static JSONObject post(String url, JSONObject postData) throws AppException {OkHttpClient httpClient = new OkHttpClient().newBuilder().connectTimeout(5, TimeUnit.SECONDS).writeTimeout(5, TimeUnit.MINUTES).readTimeout(5, TimeUnit.MINUTES).build();MediaType mediaType = MediaType.parse("application/json; charset=utf-8");RequestBody body = RequestBody.create(postData.toJSONString(), mediaType);Request req = new Request.Builder().url(url).post(body).addHeader("Api-Version", "1")
//                .addHeader("Api-Version", "1").build();try (Response response = httpClient.newCall(req).execute()) {int status = response.code();if (status != 200) {throw new AppException("请求数据失败,服务错误,代码:" + status);}ResponseBody responseBody = response.body();if(responseBody == null){throw new AppException("请求数据失败,服务端返回数据类型不正确");}String content = responseBody.string();log.info("response from cmcc, data: {}", content);if (StringUtils.isBlank(content)) {throw new AppException("请求数据失败,服务端返回数据类型不正确");}JSONObject json = JSONObject.parseObject(content);if (json == null) {throw new AppException("请求数据失败,服务端返回数据类型不正确");}return json;} catch (IOException e) {log.error("okhttp3 post error >> ex = {}", e.getMessage(), e);throw new AppException("请求数据失败:" + e.getMessage());}}

2、http请求工具类

/*** http、https 请求工具类, 微信为https的请求** @author yehx*/
public class HttpClientUtils {private static final String DEFAULT_CHARSET = "UTF-8";private static final String _GET = "GET"; // GETprivate static final String _POST = "POST";// POSTpublic static final int DEF_CONN_TIMEOUT = 10000;public static final int DEF_READ_TIMEOUT = 600000;/*** 初始化http请求参数** @param url* @param method* @param headers* @return* @throws Exception*/private static HttpURLConnection initHttp(String url, String method,Map<String, String> headers, boolean isJSONPOST) throws Exception {URL _url = new URL(url);HttpURLConnection http = (HttpURLConnection) _url.openConnection();// 连接超时http.setConnectTimeout(DEF_CONN_TIMEOUT);// 读取超时 --服务器响应比较慢,增大时间http.setReadTimeout(DEF_READ_TIMEOUT);http.setUseCaches(false);http.setRequestMethod(method);if (isJSONPOST) {http.setRequestProperty("Content-Type","application/json");} else {http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");}http.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");if (null != headers && !headers.isEmpty()) {for (Entry<String, String> entry : headers.entrySet()) {http.setRequestProperty(entry.getKey(), entry.getValue());}}http.setDoOutput(true);http.setDoInput(true);http.connect();return http;}/*** 初始化http请求参数** @param url* @param method* @return* @throws Exception*/private static HttpsURLConnection initHttps(String url, String method,Map<String, String> headers, boolean isJSONPOST) throws Exception {TrustManager[] tm = {new X509TrustManager() {@Overridepublic X509Certificate[] getAcceptedIssuers() {// TODO Auto-generated method stubreturn null;}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {// TODO Auto-generated method stub}@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {// TODO Auto-generated method stub}}};System.setProperty("https.protocols", "TLSv1");SSLContext sslContext = SSLContext.getInstance("TLS");sslContext.init(null, tm, new java.security.SecureRandom());// 从上述SSLContext对象中得到SSLSocketFactory对象SSLSocketFactory ssf = sslContext.getSocketFactory();URL _url = new URL(url);HttpsURLConnection http = (HttpsURLConnection) _url.openConnection();// 设置域名校验http.setHostnameVerifier(new HttpClientUtils().new TrustAnyHostnameVerifier());// 连接超时http.setConnectTimeout(DEF_CONN_TIMEOUT);// 读取超时 --服务器响应比较慢,增大时间http.setReadTimeout(DEF_READ_TIMEOUT);http.setUseCaches(false);http.setRequestMethod(method);if (isJSONPOST) {http.setRequestProperty("Content-Type","application/json");} else {http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");}http.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");if (null != headers && !headers.isEmpty()) {for (Entry<String, String> entry : headers.entrySet()) {http.setRequestProperty(entry.getKey(), entry.getValue());}}http.setSSLSocketFactory(ssf);http.setDoOutput(true);http.setDoInput(true);http.connect();return http;}/*** @return 返回类型:* @throws Exception* @description 功能描述: get 请求*/public static String get(String url, Map<String, String> params,Map<String, String> headers, boolean isJSONPOST) throws Exception {HttpURLConnection http = null;if (isHttps(url)) {http = initHttps(initParams(url, params), _GET, headers, isJSONPOST);} else {http = initHttp(initParams(url, params), _GET, headers, isJSONPOST);}InputStream in = http.getInputStream();BufferedReader read = new BufferedReader(new InputStreamReader(in,DEFAULT_CHARSET));String valueString = null;StringBuffer bufferRes = new StringBuffer();while ((valueString = read.readLine()) != null) {bufferRes.append(valueString);}in.close();if (http != null) {http.disconnect();// 关闭连接}return bufferRes.toString();}public static String get(String url, boolean isJSONPOST) throws Exception {return get(url, null, isJSONPOST);}public static String get(String url, Map<String, String> params, boolean isJSONPOST)throws Exception {return get(url, params, null, isJSONPOST);}public static String post(String url, String params, boolean isJSONPOST)throws Exception {HttpURLConnection http = null;if (isHttps(url)) {http = initHttps(url, _POST, null, isJSONPOST);} else {http = initHttp(url, _POST, null, isJSONPOST);}OutputStream out = http.getOutputStream();out.write(params.getBytes(DEFAULT_CHARSET));out.flush();out.close();InputStream in = http.getInputStream();BufferedReader read = new BufferedReader(new InputStreamReader(in,DEFAULT_CHARSET));String valueString = null;StringBuffer bufferRes = new StringBuffer();while ((valueString = read.readLine()) != null) {bufferRes.append(valueString);}in.close();if (http != null) {http.disconnect();// 关闭连接}return bufferRes.toString();}public static String post(String url, String params, boolean isJSONPOST, Map<String, String> headers)throws Exception {HttpURLConnection http = null;if (isHttps(url)) {http = initHttps(url, _POST, headers, isJSONPOST);} else {http = initHttp(url, _POST, headers, isJSONPOST);}OutputStream out = http.getOutputStream();out.write(params.getBytes(DEFAULT_CHARSET));out.flush();out.close();InputStream in = http.getInputStream();BufferedReader read = new BufferedReader(new InputStreamReader(in,DEFAULT_CHARSET));String valueString = null;StringBuffer bufferRes = new StringBuffer();while ((valueString = read.readLine()) != null) {bufferRes.append(valueString);}in.close();if (http != null) {http.disconnect();// 关闭连接}return bufferRes.toString();}/*** 功能描述: 构造请求参数** @return 返回类型:* @throws Exception*/public static String initParams(String url, Map<String, String> params)throws Exception {if (null == params || params.isEmpty()) {return url;}StringBuilder sb = new StringBuilder(url);if (url.indexOf("?") == -1) {sb.append("?");}sb.append(map2Url(params));return sb.toString();}/*** map构造url** @return 返回类型:* @throws Exception*/public static String map2Url(Map<String, String> paramToMap)throws Exception {if (null == paramToMap || paramToMap.isEmpty()) {return null;}StringBuffer url = new StringBuffer();boolean isfist = true;for (Entry<String, String> entry : paramToMap.entrySet()) {if (isfist) {isfist = false;} else {url.append("&");}url.append(entry.getKey()).append("=");String value = entry.getValue();if (!StringUtils.isEmpty(value)) {url.append(URLEncoder.encode(value, DEFAULT_CHARSET));}}return url.toString();}/*** 检测是否https** @param url*/private static boolean isHttps(String url) {return url.startsWith("https");}/*** 带验证的GET请求** @param url* @param username* @param password* @param map* @throws Exception*/public static String authGet(String url, String username, String password, Map<String, String> map) throws Exception {String requestUrl = initParams(url, map);HttpClient client = digestHttpClient(username, password);HttpGet httpGet = new HttpGet(requestUrl);HttpEntity entity = client.execute(httpGet).getEntity();return EntityUtils.toString(entity);}private static HttpClient digestHttpClient(String username, String password) {CredentialsProvider credentialsProvider = new BasicCredentialsProvider();credentialsProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),new UsernamePasswordCredentials(username, password));return HttpClients.custom().setDefaultCredentialsProvider(credentialsProvider).build();}private static HttpClient httpClient() {return HttpClients.custom().build();}/*** https 域名校验*/public class TrustAnyHostnameVerifier implements HostnameVerifier {public boolean verify(String hostname, SSLSession session) {return true;// 直接返回true}}
}

http和https请求工具类相关推荐

  1. .NET WebApi调用微信接口Https请求工具类

    .NET WebApi调用微信接口Https请求工具类 using System; using System.Collections.Generic; using System.IO; using S ...

  2. Java Https请求工具类

    个人技术网站 欢迎关注 由于微信API接口建议使用Https请求方式 而且过不久就废弃http请求方式了 所以提供以下Https工具类 public class SSLClient extends D ...

  3. 发送http和https请求工具类 Json封装数据

    在一些业务中我们可要调其他的接口(第三方的接口) 这样就用到我接下来用到的工具类. 用这个类需要引一下jar包的坐标 <dependency><groupId>org.jsou ...

  4. HttpClient发起Http/Https请求工具类

    本文涉及到的主要依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifact ...

  5. C#实现的UDP收发请求工具类实例

    本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...

  6. 【Java】HTTP请求工具类

    前言 在工作中可能存在要去调用其他项目的接口,这篇文章我们实现在Java代码中实现调用其他项目的接口. 本章内容: 创建一个携带参数的POST请求,去请求其他项目的接口并返回数据. 附加HTTP请求工 ...

  7. HTTP POST 请求工具类

    HTTP/HTTPS POST 请求工具类 Maven pom.xml 引入依赖 <dependency><groupId>org.apache.httpcomponents& ...

  8. Http请求工具类:Get/Post

    第一种 import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.htt ...

  9. 【Http请求工具类】

    Http请求工具类(待优化) 添加相关依赖 <!-- 发送http请求依赖 --><dependency><groupId>commons-io</group ...

最新文章

  1. 35+的大龄程序员都去哪里了?
  2. 【Android UI设计与开发】第08期:底部菜单栏(三)Fragment+FragmentTabHost实现仿新浪微博底部菜单栏
  3. 三层架构下实现用户登陆C#
  4. K8S Learning(7)—— Deployment
  5. MFC控件编程之组合框跟列表框
  6. git总是提示输入用户名密码的解决记录
  7. mysql死锁语句_记一次神奇的Mysql死锁排查
  8. OpenSolaris安装JDK以及配置java开发环境
  9. centos 下安装 mysql 5.6
  10. 分布式事务一致性方案
  11. 目录_视觉SLAM十四讲_0
  12. OpenJDK8:只有x86和sparcv9才能出32位的版本
  13. 【华为 OJ 】进制转换
  14. 微博粉丝精灵_微信全国500强、微博粉丝数省内领先……看快报这群年轻人如何运营一个个人气平台...
  15. 弹簧计算器 在线_弹簧启动执行器端点
  16. 【电脑讲解】文件夹怎么设置密码
  17. 关于firefly-rk3288开发板编译uboot的问题
  18. JavaScript判断浏览器版本
  19. 怎么用计算机弹出传说之下,传说之下神器怎么拿
  20. 14、RH850 F1 RAM存储器介绍

热门文章

  1. 一元三次多项式因式分解的两种方法
  2. JQuery - 反向选择器
  3. html防cc代码,Nginx实现简单防御cc攻击方法
  4. 骨传导蓝牙耳机哪款好、好用的骨传导耳机推荐
  5. 玩转Django2.0---Django笔记建站基础九(一)
  6. python3.5中文手册_Python-3.5.X官方学习入门指南中文版
  7. OpenStack搭建私有云一:认证服务
  8. 用Java编写2到100之间的素数;判断一个数是不是素数
  9. 2020计算机考研复试
  10. 【Android】更改程序图标