package com.common.entity.utils;
import okhttp3.*;
import org.springframework.http.HttpStatus;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.util.concurrent.TimeUnit;
/**
* @author zhiwei Liao
* @version 1.0
* @Date 2021/5/8 17:20
*/
public class HttpUtil {
private static OkHttpClient client;
private static final String DEFAULT_MEDIA_TYPE = "application/json; charset=utf-8";
private static final int CONNECT_TIMEOUT = 15;
private static final int READ_TIMEOUT = 17;
private static final String GET = "GET";
private static final String POST = "POST";
/**
* 单例模式 获取类实例
*
* @return client
*/
private static OkHttpClient getInstance() {
if (client == null) {
synchronized (OkHttpClient.class) {
if (client == null) {
client = new OkHttpClient.Builder()
.connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)
.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
.build();
}
}
}
return client;
}
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"messages\":[{\"from\":\"bamboo8\",\"destinations\":[{\"to\":\"0086 17717299170\"}],\"text\":\"1234 is your verification code\"}]}");
Request request = new Request.Builder()
.url("https://qgk983.api.infobip.com/sms/2/text/advanced")
.method("POST", body)
.addHeader("Authorization", "Basic cWlhbmd5dTpxdWFkdGFsZW50QEI4")
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.build();
try {
Response response = client.newCall(request).execute();
ResponseBody responseBody = response.body();
String result = responseBody.string();
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String doGet(String url) throws Exception{
try {
long startTime = System.currentTimeMillis();
Request request = new Request.Builder().url(url).build();
// 开启代理
String proxyHost = "127.0.0.1";
String proxyPort = "7890";
System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", proxyPort);
// 创建一个请求
Response response = getInstance().newCall(request).execute();
int httpCode = response.code();
String result;
ResponseBody body = response.body();
if (body != null) {
result = body.string();
addResponseLog(httpCode, result, startTime);
} else {
throw new Exception("exception in OkHttpUtil,response body is null");
}
return handleHttpResponse(httpCode, result);
} catch (Exception ex) {
throw new Exception("http请求异常");
}
}
public static String doPost(Request request) throws Exception{
try {
long startTime = System.currentTimeMillis();
// 开启代理
// String proxyHost = "127.0.0.1";
// String proxyPort = "7890";
// System.setProperty("http.proxyHost", proxyHost);
// System.setProperty("http.proxyPort", proxyPort);
// System.setProperty("https.proxyHost", proxyHost);
// System.setProperty("https.proxyPort", proxyPort);
// 创建一个请求
Response response = getInstance().newCall(request).execute();
int httpCode = response.code();
String result;
ResponseBody body = response.body();
if (body != null) {
result = body.string();
addResponseLog(httpCode, result, startTime);
} else {
throw new Exception("exception in OkHttpUtil,response body is null");
}
return handleHttpResponse(httpCode, result);
} catch (Exception ex) {
throw new Exception("http请求异常");
}
}
private static void addResponseLog(int httpCode, String result, long startTime) {
long endTime = System.currentTimeMillis();
}
private static String handleHttpResponse(int httpCode, String result) throws Exception {
if (httpCode == HttpStatus.OK.value()) {
return result;
}
throw new Exception("invalid_token");
}
private static void handleHttpThrowable(Exception ex, String url) throws Exception {
if (ex instanceof Exception) {
throw (Exception) ex;
}
if (ex instanceof SocketTimeoutException) {
throw new RuntimeException("request time out of OkHttp when do url:" + url);
}
throw new RuntimeException(ex);
}
}
相关推荐
CANdb++实战:5步搞定汽车电子DBC文件创建(附信号映射技巧)
本文详细介绍了使用CANdb++高效创建汽车电子DBC文件的五步实战流程,涵盖信号批量创建、报文关联、节点映射等核心技巧。文章重点解析了信号映射中的Motorola/Intel格式选择、多路复用信号处理等高级应用,并提供了从通信矩阵到可测试DBC的完整案例,帮助工程师大幅提升工作效率。
使用hutool-http发送代理请求
因为开发微信公众号需要白名单,挂一个代理在服务器上方面测试,但不加账号密码验证很不安全,会被其他服务器扫描使用,所以要增加账号密码校验。
测绘无人船避坑指南:云卓H12Pro遥控器接海康摄像头,从网络设置到RTSP流延迟优化全流程
本文详细解析了测绘无人船视频子系统的优化方案,重点介绍海康威视摄像头与云卓H12Pro遥控器的深度适配流程。从网络设置到RTSP流延迟优化,提供了一套经过实测的低延迟(<200ms)解决方案,适用于复杂水域环境下的测绘任务。
记录hutool http通过代理模式proxy访问外面的链接
记录hutool http通过代理模式proxy访问外面的链接
FPGA实战:手把手教你实现VESA DSC编码(附Verilog代码解析)
本文详细介绍了如何使用FPGA实现VESA DSC编码器,包括核心架构设计、Verilog代码实现与优化技巧。通过流水线设计、色彩空间转换和预测编码等关键技术,帮助开发者掌握工业级DSC编码器的开发流程,并提供实用的调试与性能优化方法。
Java 开发打飞机小游戏(附完整源码)
上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐。代码写的很简单,也很容易理解,并且注释写的很清楚了,还有问题,自己私下去补课学习。 完整代码 敌飞机 import java.util.Random; 敌飞机: 是飞行物,也是敌人 public class Airplane extends FlyingObject implements Enemy {
hutool http使用细节(个人记录)
场景:你需要使用代理才能使用http 你需要引入5.4.6的版本才拥有setHttpProxy这个方法 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.4.6</version> </dependency>
Manus创始人深度复盘:AI Agent产品的技术架构与战略转型
成本对比:同样任务处理,中国区单位成本是亚太区的2.3倍。付费转化率:中国区1.2% vs 全球平均4.7%微信/支付宝等超级App的适配代码占比达17%Zstandard:压缩比38%,耗时12ms。每季度需要投入3名高级工程师专职维护兼容性。国际版API平均延迟:180-220ms。中国版特殊部署延迟:480-720ms。信息保持准确率:93%(7天跨度测试)自研算法:压缩比39%,耗时5ms。存储效率:相比纯文本节省68%空间。:本地化部署导致的延迟与费用差异。LZ4:压缩比42%,耗时8ms。
代理模式(十五)
1. 代理模式
Android SystemUI——车载CarSystemUI加载(八)
车载 CarSystemUI 是指专门为汽车环境设计的用户界面和用户体验(UI/UX),它通常与 Android Automotive OS 或其他嵌入式操作系统一起工作,为驾驶者和乘客提供安全、直观且高效的交互方式。Android Automotive OS 是 Google 专门为汽车开发的操作系统版本,它基于 Android 平台,并针对车辆内部的使用进行了优化。
STM32F401RCT6最小系统原理图设计
STM32F401RCT6最小系统原理图设计一、主控芯片二、电源电路三、晶振电路三、下载电路四、完整电路图 本文章基于STM32F401RCT6进行最小系统原理图设计,包含主控芯片,电源,晶振电路,下载电路等几部分 一、主控芯片 主控芯片采用STM32F401RCT6,需注意: VBAT在不接电池的情况下需接3.3V,VDDAVREF+需接3.3V,否则会造成芯片供电不正常,无法启动和识别的情况 VDDAVREF+和VCAP1处电容需按照规格书
Java请求Http接口-hutool的HttpUtil(超详细-附带工具类)
HttpUtil是应对简单场景下Http请求的工具类封装,此工具封装了HttpRequest对象常用操作,可以保证在一个方法之内完成Http请求。此模块基于JDK的HttpUrlConnection封装完成,完整支持https、代理和文件上传。
我的PCB设计经验总结及最容易犯错的100例之二B07
本文总结了PCB设计中的常见错误及解决方法。作者通过记录自身及他人的设计失误,系统归纳了高频、隐蔽且致命的问题,如电容中间穿线、高速信号跨分割、锐角布线等。重点提出从错误中提炼规律,建立分类案例库,并开发自动化检查工具的方法。案例涵盖高速信号处理、电源设计、EMC防护等关键领域,强调通过原理理解和实践验证提升设计质量。文章建议工程师建立个人错误数据库,从被动纠错升级为主动预防,最终形成系统化的设计方法论,提高PCB一次成功率。
Java常用工具类之HttpUtils
HttpClien请求涉及到两个类,一个是http的请求,另一个是对http连接池参数进行设置。 HttpUtil @Slf4j @Component public class HttpUtil { private static final MediaType JSON = MediaType.parse("application/json;charset=UTF-8"); private static final MediaType XML = MediaType.parse("appl
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
Hutool Http客户端工具类-HttpUtil使用
HttpUtil是应对简单场景下Http请求的工具类封装,这个工具类可以保证在一个方法之内完成Http请求。 1HttpUtil.get() 用于请求普通页面,然后返回页面内容的字符串,同时提供一些重载方法用于指定请求参数。 // 最简单的HTTP请求,可以自动通过header等信息判断编码,不区分HTTP和HTTPS String result1= HttpUtil.get("https://www.baidu.com"); // 当无法识别页面编码的时候,可以自定义请求页面的编码 Strin.
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
HuTool设置请求代理报Proxy returns “HTTP/1.1 407 Proxy Authentication Required“
最近在通过hutool工具进行代理请求时发现一个报错,大致代码如下。添加启动参数,放在springboot项目main方法中就行。其它 : 推荐使用 HttpClient。调用的是https,报错信息如下。
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
使用代理调用http接口
【代码】使用代理调用http接口。
使用hutool工具类HttpUtil请求外部接口传输文件
外部服务器请求系统文件接口,系统接口返回文件流,并下载到本地。使用HttpUtil调用外部接口,实现文件下载到本地。
Java使用hutool工具类发送http请求
Java使用hutool工具类发送网络请求 引入jar包 pom.xml添加以下hutool依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.1.2</version> </dependency> 使用案例 1.httpUtil使用post和get请求 String url
java http请求设置代理 Proxy
java http 代理方式
Http请求-hutool工具类的使用
工具类的使用
HttpUtil学习笔记
例如,如果服务器返回的是 JSON 数据,可以使用 JSON 解析库将字符串解析为 Java 对象进行业务逻辑处理。当发送多个 HTTP 请求时,通过复用已有的连接而不是每次都重新建立连接,可以大大提高效率。是一个非常实用的工具。可以简化这个过程,通过发送 GET 请求获取网页的 HTML 内容,然后再利用 HTML 解析库(如。可以用于微服务之间的请求发送和响应接收,方便在各个微服务之间传递数据、调用服务接口等操作。会自动处理连接建立、发送请求、接收响应等操作,并将服务器的响应以字符串形式返回。
hutool的httpUtil的使用(访问第三方接口)
调用第三方接口
Hutool Java工具类库-HttpUtil(HTTP 客户端工具类)
Hutool工具包的HttpUtil模块封装了JDK的HttpURLConnection,提供简单易用的HTTP客户端功能。本文详细介绍了HttpUtil和HttpRequest类的核心方法,包括GET/POST请求、文件上传下载、URL处理等常用功能,并展示了链式构建请求、HTTPS处理、RESTful API调用等高级用法。文章还提供了性能优化建议和异常处理方案,帮助开发者高效安全地进行HTTP通信。HttpUtil通过简洁API、自动编码处理、连接池管理等特性,显著提升了Java HTTP开发的效率。
Java 实现ip代理池请求-爬虫防封、文章阅读刷量(1),2024年是意义非凡的一年
(img-CT4i34g8-1711776317554)]第二步,请求api接口,获得代理ip列表,实现ip代理请求指定网址。vip1024c (备注Python)**
Hutool HTTP 操作教程
Hutool HTTP 操作教程
946



被折叠的 条评论
为什么被折叠?



