实战:第二十五章:HttpUtil代理

Java 多线程(1)---- 初识线程 前言 多线程想必大家都不会陌生。因为在日常使用和开发中,多线程的使用实在是太常见了。我们都知道,发明多线程的目的是为了更好的利用计算机的 CPU 资源。比如在一个进程中如果只有一个线程(也叫主线程),那么如果当这个线程因为某种原因阻塞(等待用户输入数据等情况)的时候,那么相对应的这个进程也让出了 CPU 资源并暂停执行了。试想一下,如果我们在一个进程中添加多个线程,那么当这个进程中某个线程阻塞的... 阅读详情
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);
    }

}
轴承故障诊断领域的论文到底有多水 这个是最让人困惑的,就好像你说自己证明了某个方法更好,但是你却没有交代自己怎么做的,或者说你交代的过程有外行话或者逻辑上的缺陷,但是你就这么给出个结果完事了。由于自己没有足够大的学术交流圈子,为了尽量避免误判,我在原来13篇论文的基础上又读了18篇,这些论文至少都出自中文核心,有一些还有EI的title,事实上近几年能找到的文章也不算多,这些基本能说明问题了。当然,还有更多细节,比如说损失函数你得交代吧,模型超参数得介绍全吧,至少数据集是哪个工况下的得说吧,当你想复现这些论文,关注点在这些地方的时候。 阅读详情

相关推荐

CANdb++实战:5步搞定汽车电子DBC文件创建(附信号映射技巧)

本文详细介绍了使用CANdb++高效创建汽车电子DBC文件的五步实战流程,涵盖信号批量创建、报文关联、节点映射等核心技巧。文章重点解析了信号映射中的Motorola/Intel格式选择、多路复用信号处理等高级应用,并提供了从通信矩阵到可测试DBC的完整案例,帮助工程师大幅提升工作效率。

ss78901的博客 946

使用hutool-http发送代理请求

因为开发微信公众号需要白名单,挂一个代理在服务器上方面测试,但不加账号密码验证很不安全,会被其他服务器扫描使用,所以要增加账号密码校验。

akoles的博客 2649

测绘无人船避坑指南:云卓H12Pro遥控器接海康摄像头,从网络设置到RTSP流延迟优化全流程

本文详细解析了测绘无人船视频子系统的优化方案,重点介绍海康威视摄像头与云卓H12Pro遥控器的深度适配流程。从网络设置到RTSP流延迟优化,提供了一套经过实测的低延迟(<200ms)解决方案,适用于复杂水域环境下的测绘任务。

weixin_30415113的博客 628

记录hutool http通过代理模式proxy访问外面的链接

记录hutool http通过代理模式proxy访问外面的链接

sun 5434

FPGA实战:手把手教你实现VESA DSC编码(附Verilog代码解析)

本文详细介绍了如何使用FPGA实现VESA DSC编码器,包括核心架构设计、Verilog代码实现与优化技巧。通过流水线设计、色彩空间转换和预测编码等关键技术,帮助开发者掌握工业级DSC编码器的开发流程,并提供实用的调试与性能优化方法。

weixin_29165725的博客 406

Java 开发打飞机小游戏(附完整源码)

上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐。代码写的很简单,也很容易理解,并且注释写的很清楚了,还有问题,自己私下去补课学习。 完整代码 敌飞机 import java.util.Random; 敌飞机: 是飞行物,也是敌人 public class Airplane extends FlyingObject implements Enemy {

一只独孤的程序猿 1万+

hutool http使用细节(个人记录)

场景:你需要使用代理才能使用http 你需要引入5.4.6的版本才拥有setHttpProxy这个方法 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.4.6</version> </dependency&gt

weixin_46845168的博客 4849

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。

m0_75253143的博客 7147

代理模式(十五)

1. 代理模式

两个蝴蝶飞 1891

Android SystemUI——车载CarSystemUI加载(八)

车载 CarSystemUI 是指专门为汽车环境设计的用户界面和用户体验(UI/UX),它通常与 Android Automotive OS 或其他嵌入式操作系统一起工作,为驾驶者和乘客提供安全、直观且高效的交互方式。Android Automotive OS 是 Google 专门为汽车开发的操作系统版本,它基于 Android 平台,并针对车辆内部的使用进行了优化。

小旭的专栏 2175

STM32F401RCT6最小系统原理图设计

STM32F401RCT6最小系统原理图设计一、主控芯片二、电源电路三、晶振电路三、下载电路四、完整电路图      本文章基于STM32F401RCT6进行最小系统原理图设计,包含主控芯片,电源,晶振电路,下载电路等几部分 一、主控芯片 主控芯片采用STM32F401RCT6,需注意: VBAT在不接电池的情况下需接3.3V,VDDAVREF+需接3.3V,否则会造成芯片供电不正常,无法启动和识别的情况 VDDAVREF+和VCAP1处电容需按照规格书

weixin_43278295的博客 2万+

Java请求Http接口-hutool的HttpUtil(超详细-附带工具类)

HttpUtil是应对简单场景下Http请求的工具类封装,此工具封装了HttpRequest对象常用操作,可以保证在一个方法之内完成Http请求。此模块基于JDK的HttpUrlConnection封装完成,完整支持https、代理和文件上传。

苍煜 5万+

我的PCB设计经验总结及最容易犯错的100例之二B07

本文总结了PCB设计中的常见错误及解决方法。作者通过记录自身及他人的设计失误,系统归纳了高频、隐蔽且致命的问题,如电容中间穿线、高速信号跨分割、锐角布线等。重点提出从错误中提炼规律,建立分类案例库,并开发自动化检查工具的方法。案例涵盖高速信号处理、电源设计、EMC防护等关键领域,强调通过原理理解和实践验证提升设计质量。文章建议工程师建立个人错误数据库,从被动纠错升级为主动预防,最终形成系统化的设计方法论,提高PCB一次成功率。

启芯硬件的博客 88

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

weixin_42246822的博客 1133

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.

旭东怪的博客 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

HuTool设置请求代理报Proxy returns “HTTP/1.1 407 Proxy Authentication Required“

最近在通过hutool工具进行代理请求时发现一个报错,大致代码如下。添加启动参数,放在springboot项目main方法中就行。其它 : 推荐使用 HttpClient。调用的是https,报错信息如下。

重复生活的博客 2030

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用代理调用http接口

【代码】使用代理调用http接口。

qq_43588909的博客 431

使用hutool工具类HttpUtil请求外部接口传输文件

外部服务器请求系统文件接口,系统接口返回文件流,并下载到本地。使用HttpUtil调用外部接口,实现文件下载到本地。

Y175123213的博客 3656

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

qq_41903017的博客 5万+

java http请求设置代理 Proxy

java http 代理方式

qq_38653981的博客 1万+

Http请求-hutool工具类的使用

工具类的使用

三横同学的博客 1万+

HttpUtil学习笔记

例如,如果服务器返回的是 JSON 数据,可以使用 JSON 解析库将字符串解析为 Java 对象进行业务逻辑处理。当发送多个 HTTP 请求时,通过复用已有的连接而不是每次都重新建立连接,可以大大提高效率。是一个非常实用的工具。可以简化这个过程,通过发送 GET 请求获取网页的 HTML 内容,然后再利用 HTML 解析库(如。可以用于微服务之间的请求发送和响应接收,方便在各个微服务之间传递数据、调用服务接口等操作。会自动处理连接建立、发送请求、接收响应等操作,并将服务器的响应以字符串形式返回。

qq_41924536的博客 1402

hutool的httpUtil的使用(访问第三方接口)

调用第三方接口

Future_Myself的博客 7049

Hutool Java工具类库-HttpUtil(HTTP 客户端工具类)

Hutool工具包的HttpUtil模块封装了JDK的HttpURLConnection,提供简单易用的HTTP客户端功能。本文详细介绍了HttpUtil和HttpRequest类的核心方法,包括GET/POST请求、文件上传下载、URL处理等常用功能,并展示了链式构建请求、HTTPS处理、RESTful API调用等高级用法。文章还提供了性能优化建议和异常处理方案,帮助开发者高效安全地进行HTTP通信。HttpUtil通过简洁API、自动编码处理、连接池管理等特性,显著提升了Java HTTP开发的效率。

lengxia0的博客 2271

Java 实现ip代理池请求-爬虫防封、文章阅读刷量(1),2024年是意义非凡的一年

(img-CT4i34g8-1711776317554)]第二步,请求api接口,获得代理ip列表,实现ip代理请求指定网址。vip1024c (备注Python)**

2401_83974020的博客 392

Hutool HTTP 操作教程

Hutool HTTP 操作教程

lizhengyu891231的博客 293
上一篇: 开发工具:第六章:Java开发者相关的所有软件安装包(35.55GB的资源)
下一篇: Java资深开发:这不得40k起步呀
Java程序员廖志伟
Java程序员廖志伟 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄8年 2万+粉丝 1902原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序员廖志伟

赏我包辣条呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值