HttpClient5如何设置代理

news2024/11/24 4:00:37

文章目录

  • 说明
  • 原始HttpClient
  • 代理HttpClient
  • 总结

说明

在这篇文章中会对HttpClient5如何进行代理进行说明,我的HttpClient版本是5.2.1。在进行代理之前请先准备好代理服务器

原始HttpClient

下面是没有进行代理设置的代码,尝试去访问openai接口

    @Test
    public void t1() throws IOException {
        String url = "https://api.openai.com/v1/chat/completions";
        HttpPost httpPost = new HttpPost(url);
        try (CloseableHttpClient client = HttpClients.createDefault()) {
            client.execute(new HttpHost("api.openai.com"), httpPost, response -> {
                System.out.println(response);
                return null;
            });
        }
    }

运行这个代码,不出意外的运行失败了

image-20230512232346694

代理HttpClient

在HttpClient比较早的版本是通过setProxy方法来进行代理设置的,但是现在这个方法已经废弃了

        @Deprecated
        public Builder setProxy(final HttpHost proxy) {
            this.proxy = proxy;
            return this;
        }

在现在的版本中我们应该使用DefaultProxyRoutePlanner,下面就是应该简单用法,在new的时候传入一个HttpHost即可,指定要代理的主机和端口

        HttpHost proxy = new HttpHost("127.0.0.1", 7890);
        DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);

下面的代码就使用代理去访问openai的接口

    @Test
    public void t2() throws IOException {
        //要访问的网址
        String url = "https://api.openai.com/v1/chat/completions";
        HttpHost proxy = new HttpHost("127.0.0.1", 7890);
        DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);

        HttpPost httpPost = new HttpPost(url);
        try (CloseableHttpClient client = HttpClients.custom().setRoutePlanner(routePlanner).build()) {
            client.execute(new HttpHost("api.openai.com"), httpPost, response -> {
                System.out.println(response);
                return null;
            });
        }
    }

使用的代理之后代码就能够访问openai的接口了

image-20230512233339784

总结

使用代理其实很简单,就是调用下setRoutePlanner方法

CloseableHttpClient client = HttpClients.custom().setRoutePlanner(routePlanner).build()

异步请求也是类似的

CloseableHttpAsyncClient asyncClient = HttpAsyncClients.custom().setRoutePlanner(routePlanner).build();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/531333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

监控室值班人员脱岗睡岗识别算法 yolov7

监控室值班人员脱岗睡岗识别算法基于Yolov7深度学习神经网络算法,监控室值班人员脱岗睡岗识别算法模型可以7*24小时不间断自动人员是否在工位上(脱岗睡岗玩手机),若人员没有在工位,系统则立即抓拍告警,算法…

GBASE南大通用携手长亮科技 重磅推出金融数据仓库联合解决方案

随着数字化转型进程深入,金融企业对数据赋能的需求更加迫切,如何融合内外部业务数据,实现数据纵向贯通、横向穿透,让数据资源真正成为业务发展的新引擎;同时,信创浪潮风起云涌,数据库作为底层软…

深度学习语义分割篇——FCN源码解析篇

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊往期回顾:深度学习语义分割篇——FCN原理详解篇 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍&…

分享Python采集66个菜单导航,总有一款适合您

分享Python采集66个菜单导航,总有一款适合您 Python采集的66个菜单导航下载链接:https://pan.baidu.com/s/11ElCiEa6OesmPxY6U9320w?pwdvdok 提取码:vdok jQuery手风琴滑动下拉菜单展开收缩代码 JS树形结构下拉列表菜单选择代码 简单的…

人脸识别2:InsightFace实现人脸识别Face Recognition(含源码下载)

目录 1. 前言 2. 项目安装 3. 人脸识别系统 (1)人脸检测和关键点检测 (2)人脸校准 (3)人脸特征提取 (4)人脸比对(1:1) (5)人脸搜索(1:N) &#xff08…

将数组中的“缺失值”“正无穷大”“负无穷大”替换为指定的数值np.nan_to_num()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将数组中的“缺失值”“正无穷大” “负无穷大”替换为指定的数值 np.nan_to_num() 选择题 下列说法错误的是? import numpy as np a np.array([11,-22,np.nan,np.inf,-np.inf]) print(&q…

Cefsharp113.1.40版本功能体验(支持MP3,不支持H264)-winform

下载包本地更新:NuGet Gallery | CefSharp.WinForms 113.1.40 因许可问题,不支持H264/AAC。Due to licensing issues default builds do not support proprietary codecs like H264/AAC, sites like Netflix/Twitter/Instagram/Facebook/Spotify/Apple Music wont play vide…

MS CoCo数据集

一、前言 Ms CoCo数据集是一个非常大型且常用的数据集,可以做的任务有目标检测、图像分割、图像描述等 数据集地址:链接 描述数据集的论文地址:链接 有一点需要注意:数据集的物体类别分为80类和91类两种,其中object80类…

ThingsBoard自定义万能查询节点entity query node

1、概述 大家好,我又更新干货了,还是那句话,我绝不分享那些照抄官网翻译的东西来骗订阅,我觉得那是浪费时间,要搞就搞干货,今天给大家分享ThingsBoard如何自定义规则节点,而且是万能查询节点,这是本人经过多次研究搞出来的,这个节点有什么特别之处呢?这个节点几乎可…

vue脚手架:路由的配置和使用

一、路由的配置和使用 1、引入router 在创建项目的时候可以默认用Vue脚手架中的自动生成路由文件或者自己下载(注意vue和vue-router版本的对应关系) 2、创建路由组件并引入: 在views文件夹中创建2个.vue文件作为路由组件: 引…

报表开发组件FastReport Mono v2023.1 - 支持与My Reports Cloud集成

FastReport Mono v2023.1现已推出! 最新版中更新了与 My Reports Cloud 的部分集成、来自 JasperReports 的模板转换器等功能,同时修复了10余处问题,点击下方免费试用哦~ FastReport Mono v2023.1现已推出! 今天将为大家带来FastReport Mono v2023.1更新…

【k8s】【ELK】基于节点DaemonSet运行日 志Agent实践【待写】

1.日志收集场景分析与说明 部署架构说明 对于那些将日志输出到&#xff0c;stdout与stderr的Pod&#xff0c; 可以直接使用DaemonSet控制器在每个Node节点上运行一个 <font colorred>filebeat、logstash、fluentd </font>容器进行统一的收集&#xff0c;而后写入…

使用doop识别最近commons text漏洞的污点信息流

作者&#xff1a;vivo 互联网安全团队 - Chen Haojie 本文基于笔者对doop静态程序分析框架源代码和规则学习&#xff0c;并结合对目前漏洞公开技术细节的学习&#xff0c;修改增强doop app only模式下的分析规则后&#xff0c;实现通过doop工具识别commons text rce漏洞&#…

【QuartusII】0-创建工程模板

一、创建工程 1、激活安装quartus II软件后&#xff0c;打开即见如下界面 2、在菜单栏 “File -> New Project Wizard…”中&#xff0c;进入创建工程流程 3、第一部分&#xff0c;如下图&#xff0c;配置路径、项目名称、以及顶层文件&#xff08;类似C语言的main&#xf…

Mac上如何装Nacos?

Nacos大家都很熟悉,服务注册中心,那么今天给大家写一篇Mac上如何装Nacos的文章。 安装步骤如下: 1、上官网 http://nacos.io/zh-cn/ 点击跳到nacos的官网上。然后点击前往Github 2、找到release 发布版本 来到GitHub上后,页面往下滑,找到latest stable release,点击…

【Linux】管道的读写特点和管道设置为非阻塞

目录 管道的读写特点管道设置为非阻塞 橙色 管道的读写特点 使用管道时&#xff0c;需要注意以下几种特殊的情况&#xff08;假设都是阻塞I/O操作&#xff09; 所有的指向管道写端的文件描述符都关闭了&#xff08;管道写端引用计数为0&#xff09;&#xff0c;有进程从管道的…

Shapefile在线查看利器【MapJS】

MapJS是一个免费的GIS地图文件在线查看工具&#xff0c;在浏览器里即可直接打开本地的Shapfile、GeoJSON、TopoJSON、KML等文件进行查看。 MapJS在线访问地址&#xff1a;Shapefile|GeoJSON|KML在线查看工具 。 1、MapJS快速上手 在浏览器中打开MapJS官网后&#xff0c;直接拖…

计算机图形学 | 奇妙的真实感——片元着色

计算机图形学 | 奇妙的真实感——片元着色 计算机图形学 | 奇妙的真实感——片元着色9.1 图形渲染与视觉外观图形渲染的光栅化阶段基于视觉外观的渲染视觉物理现象视觉现象光照计算着色方式表面细节有光有影才有真实感 9.2 奇妙的颜色什么是颜色可见光谱颜色视觉的生理基础 人眼…

美颜sdk的多平台适配与跨平台开发技术分享

美颜sdk作为互联网时代的重要工具&#xff0c;也因其高效、稳定、易用的特点&#xff0c;被越来越多的应用开发者所采用。然而&#xff0c;在不同的平台上使用美颜sdk时&#xff0c;会遇到一些问题&#xff0c;如何进行多平台适配和跨平台开发&#xff0c;成为了一个值得探讨的…

只需要两步就能快速接入GPT

缘起 最近一个朋友提出&#xff0c;让我出个关于如何快速接入GPT的教程&#xff0c;今天就给大家安排上。 需要的工具 经过实测&#xff0c;这是迄今为止最便捷的接入方式&#xff0c;而且亲测有效。 首先&#xff0c;第一步你需要下载最新版的微软Edge浏览器&#xff0c;去…