HttpUtils工具类

用于java程序 发起 网络请求

@Slf4j
public class OkHttpUtils {private static final String HTTP_JSON = "application/json; charset=utf-8";private static final String HTTP_FORM = "application/x-www-form-urlencoded; charset=utf-8";private static final OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(120, TimeUnit.SECONDS).readTimeout(120, TimeUnit.SECONDS).writeTimeout(120, TimeUnit.SECONDS).build();/*** get请求* 对于小文档,响应体上的string()方法非常方便和高效。* 但是,如果响应主体很大(大于1 MB),则应避免string(),* 因为它会将整个文档加载到内存中。在这种情况下,将主体处理为流。** @param url* @return*/public static String httpGet(String url) {if (url == null || "".equals(url)) {log.error("url为null!");return "";}Request.Builder builder = new Request.Builder();Request request = builder.get().url(url).build();try {Response response = okHttpClient.newCall(request).execute();if (response.code() == 200) {log.info("http GET 请求成功; [url={}]", url);return response.body().string();} else {log.warn("Http GET 请求失败; [errorCode = {} , url={}]", response.code(), url);}} catch (IOException e) {throw new RuntimeException("同步http GET 请求失败,url:" + url, e);}return null;}public static String httpGet(String url, Map<String, String> headers) {if (CollectionUtils.isEmpty(headers)) {return httpGet(url);}Request.Builder builder = new Request.Builder();headers.forEach((String key, String value) -> builder.header(key, value));Request request = builder.get().url(url).build();try {Response response = okHttpClient.newCall(request).execute();if (response.code() == 200) {log.info("http GET 请求成功; [url={}]", url);return response.body().string();} else {log.warn("Http GET 请求失败; [errorxxCode = {} , url={}]", response.code(), url);}} catch (IOException e) {throw new RuntimeException("同步http GET 请求失败,url:" + url, e);}return null;}/*** 同步 POST调用 无Header** @param url* @param json* @return*/public static String httpPostJson(String url, String json) {if (url == null || "".equals(url)) {log.error("url为null!");return "";}MediaType JSON = MediaType.parse(HTTP_JSON);RequestBody body = RequestBody.create(JSON, json);Request.Builder requestBuilder = new Request.Builder().url(url);Request request = requestBuilder.post(body).build();try {Response response = okHttpClient.newCall(request).execute();if (response.code() == 200) {log.info("http Post 请求成功; [url={}, requestContent={}]", url, json);return response.body().string();} else {log.warn("Http POST 请求失败; [ errorCode = {}, url={}, param={}]", response.code(), url, json);}} catch (IOException e) {throw new RuntimeException("同步http请求失败,url:" + url, e);}return null;}/*** 同步 POST调用 有Header** @param url* @param headers* @param json* @return*/public static String httpPostJson(String url, Map<String, String> headers, String json) {if (CollectionUtils.isEmpty(headers)) {httpPostJson(url, json);}MediaType JSON = MediaType.parse(HTTP_JSON);RequestBody body = RequestBody.create(JSON, json);Request.Builder requestBuilder = new Request.Builder().url(url);headers.forEach((k, v) -> requestBuilder.addHeader(k, v));Request request = requestBuilder.post(body).build();try {Response response = okHttpClient.newCall(request).execute();if (response.code() == 200) {log.info("http Post 请求成功; [url={}, requestContent={}]", url, json);return response.body().string();} else {log.warn("Http POST 请求失败; [ errorCode = {}, url={}, param={}]", response.code(), url, json);}} catch (IOException e) {throw new RuntimeException("同步http请求失败,url:" + url, e);}return null;}/*** 提交表单* @param url* @param content* @param headers* @return*/public static String postDataByForm(String url, String content, Map<String, String> headers) {MediaType JSON = MediaType.parse(HTTP_FORM);RequestBody body = RequestBody.create(JSON, content);Request.Builder requestBuilder = new Request.Builder().url(url);if (headers != null && headers.size() > 0) {headers.forEach((k, v) -> requestBuilder.addHeader(k, v));}Request request = requestBuilder.post(body).build();Response response = null;try {response = okHttpClient.newCall(request).execute();if (response.code() == 200) {log.info("postDataByForm; [postUrl={}, requestContent={}, responseCode={}]", url, content, response.code());return response.body().string();} else {log.warn("Http Post Form请求失败,[url={}, param={}]", url, content);}} catch (IOException e) {log.error("Http Post Form请求失败,[url={}, param={}]", url, content, e);throw new RuntimeException("Http Post Form请求失败,url:" + url);}return null;}/*** lambda表达式异步调用http模板,不建议使用** @param request* @param failure* @param respConsumer*/public static void asyncCall(Request request, Consumer<Exception> failure, Consumer<Response> respConsumer) {okHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {failure.accept(e);}@Overridepublic void onResponse(Call call, Response response) throws IOException {respConsumer.accept(response);}});}}

HttpUtils工具类 java程序 发起 网络请求相关推荐

  1. java okhttp3 工具类,Retrofit+okhttp+Rxjava网络请求工具类

    1.BaseApis接口封装请求方式 package com.example.wdshop.network; import java.util.Map; import okhttp3.Response ...

  2. 超好用的后端发送http请求HttpUtils工具类(基于原生http连接,不需要另外导包)

    在项目中,为了实现一些特定的功能,我们常常需要发送http异步请求 ,为此需要特意封装一个实用的HttpUtils工具类 HttpUtils工具类内容如下: package com.zyw.secki ...

  3. Java操作百万数据量Excel导入导出工具类(程序代码教程)

    Java操作百万数据量Excel导入导出工具类(程序代码教程): # 功能实现1.自定义导入数据格式,支持配置时间.小数点类型(支持单/多sheet)(2种方式:本地文件路径导入(只支持xls.xls ...

  4. 微信小程序在真机上发起网络请求失败

    问题描述 在开发工具上发起网络请求没有问题,但是在真机上就收不到响应.(测试机型,荣耀9) 解决方法 代码中请求的url采用http协议即可.即使我在配置request合法域名时,采用的是https协 ...

  5. 微信小程序的网络请求 —— 微信小程序教程系列(14)

    网络请求,基本上是必须的环节之一. 小程序提供了wx.request(object),与开发者的服务器实现数据交互的一个很重要的api. 最简单的用法如下(以GET请求为例) <view bin ...

  6. Java如何发起http请求的实现(GET/POST)

    前言 在未来做项目中,一些功能模块可能会采用不同的语言进行编写.这就需要http请求进行模块的调用.那么下面,我将以Java为例,详细说明如何发起http请求. 一.GET与POST GET和POST ...

  7. dio网络框架封装_Flutter 使用dio来发起网络请求以及Cookie管理

    前言 Flutter官方建议您使用 dio 来发起网络请求,在学习过程中,也尝试过用dart io中的HttpClient发起的请求,这里主要讲一下dio的使用以及CookieJar.CookieMa ...

  8. 鸿蒙开发-使用fetch发起网络请求

    场景 鸿蒙基于JS搭建HelloWorld并修改国际化文件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118274050 在 ...

  9. 腾讯开放平台接口鉴权(计算签名)工具类 java版

    腾讯开放平台 接口鉴权(签名)工具类 java版 用到了Hutool工具类 package top.seasmall.platform.core.config.nettyws.util;import ...

最新文章

  1. 实战DeviceIoControl 之中的一个:通过API訪问设备驱动程序
  2. Spring5-IOC容器实现方式
  3. C++ 字符数组函数与string函数
  4. Win10 通过升级安装完成后出现了中文字体忽大忽小的问题解决。
  5. 在linux系统上使用jmeter
  6. BUAA_OO_Unit1总结
  7. Qt的特性——信号和槽
  8. audio语音相关的基础知识-VAD,ASR,AEC,AGC,BF等
  9. 基于双二阶广义积分器(DSOGI)的软件锁相环需求的根源及s域仿真
  10. 网络攻防|Web后门知识详解
  11. 【Python精彩案例】生成动态二维码
  12. CTF中压缩文件的常见解法
  13. 树莓派CM4六路串口设置及使用
  14. 汽车领域多语种迁移学习挑战赛-Coggle 30 Days of ML
  15. [BJDCTF 2nd] 燕言燕语-y1ng
  16. [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever...
  17. 借助Docker hub自己手动制作镜像(以Nginx镜像为例)
  18. 网络安全基础:公钥密码体制
  19. Hive-编写UDF函数(详细教程~~~)
  20. 学人工智能需要什么配置的电脑?AI电脑配置需求

热门文章

  1. 过早死亡的工人所造成的接触石棉和间皮瘤
  2. nested exception is java.lang.NoSuchMethodError: org.springframework.http.MediaType.getCharset()
  3. RocketMQ发送延迟消息时报错,发送同步消息却正常
  4. SpringBoot项目开发实录
  5. 一款免开发的五路彩灯产品该如何打造?
  6. 蓝牙耳机什么牌子性价比高?2021全新出炉,高人气蓝牙耳机榜单
  7. 山东大学软件学院机器学习(考试)——期末考试回忆版
  8. php最新威客任务平台源码修复版,PHP手机版威客任务平台源码 修复版 支持投票任务系统发单任务平台源码...
  9. 区分glFrustum和gluPerspective
  10. 百度网盘共享文件夹复制服务器错误,分享链接失效?百度网盘秘密武器共享文件夹功能使用详解-rar文件怎么打开...