当前位置: 首页 > wzjs >正文

网站源码下载百度图片识别搜索

网站源码下载,百度图片识别搜索,艺术留学机构,潍坊做外贸网站建设​介绍 Java 原生 HttpClient 是从 Java 11 开始引入的标准库,用于简化 HTTP 请求的发送与响应处理。它支持同步和异步请求,并内置对 HTTP/1.1 和 HTTP/2 协议的支持。HttpClient 提供了易用的 API 来设置请求头、请求体、处理响应以及配置 SSL/TLS 加密…

 ​介绍

Java 原生 HttpClient 是从 Java 11 开始引入的标准库,用于简化 HTTP 请求的发送与响应处理。它支持同步和异步请求,并内置对 HTTP/1.1 和 HTTP/2 协议的支持。HttpClient 提供了易用的 API 来设置请求头、请求体、处理响应以及配置 SSL/TLS 加密等安全功能。

 


 

一个简单的例子

发送 GET 请求并将打印 Response

HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://localhost:8080/get")).GET().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.statusCode());
System.out.println(response.headers());
System.out.println(response.body());

 


 

核心对象

HttpClient

要发送请求,首先需要通过其构建器创建一个 HttpClient 实例。构建器允许配置客户端的各种状态,例如 HTTP 协议版本、是否重定向、超时设置、代理、身份验证等等,从而定制每个客户端的行为。

HttpClient client = HttpClient.newBuilder().version(HttpClient.Version.HTTP_2).followRedirects(HttpClient.Redirect.NORMAL).proxy(ProxySelector.of(new InetSocketAddress("www-proxy.com", 8080))).connectTimeout(Duration.ofMillis(200)).authenticator(Authenticator.getDefault()).build();


HttpRequest

HttpRequest 扮演着构建和配置 HTTP 请求的角色,,包括设置请求的 URL、请求方法(如 GET、POST、PUT 等)、请求头、请求体、超时时间等。HttpRequest 是不可变的,一旦创建后无法修改,只能通过 HttpRequest 的构建器来创建一个定制的请求对象。

HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://localhost:8080/get")).GET().build();HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://localhost:8080/post")).header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.noBody()).timeout(Duration.ofMinutes(1)).build();

 

HttpResponse

HttpResponse 用于表示 HTTP 请求的响应。它封装了 HTTP 响应的状态码、响应体、响应头、请求 URI、HTTP 协议版本等等。

HttpResponse 的常用方法

  • statusCode():获取 HTTP 响应的状态码。
  • body():获取响应体内容。
  • headers():获取所有响应头。
  • uri():获取响应对应的请求 URI。
  • version():获取响应使用的 HTTP 协议版本。

响应体的处理

响应体是通过 HttpResponse.BodyHandler 来处理的。HttpResponse.BodyHandler 是一个接口,用来定义如何处理响应体的内容。常用的 BodyHandler 有:

  • BodyHandlers.ofString():将响应体处理为字符串(适用于文本响应)
  • BodyHandlers.ofByteArray():将响应体处理为字节数组(适用于二进制数据,如文件下载)。
  • BodyHandlers.ofInputStream():将响应体处理为 InputStream(适用于流式处理)。
  • BodyHandlers.ofFile():将响应体直接写入文件(适用于文件下载等场景)。

 



同步和异步

同步

同步 HttpClient 通过调用 send() 方法来发送请求并等待响应。在请求完成之前,当前线程会被阻塞,即线程会等待直到 HTTP 响应返回并处理结果。

上文给出的例子都是同步请求

特点:

  • 阻塞:当前线程会等待直到请求完成并获取响应。
  • 顺序执行:代码会按顺序执行,每个请求都必须等待前一个请求完成。
  • 适用场景:适合较少的并发请求,或者请求和响应的顺序很重要时。

异步

通过调用 sendAsync() 方法来发送请求,该方法立即返回一个 CompletableFuture,而不是直接返回响应。请求会在后台线程中执行,主线程不会被阻塞。你可以使用 thenAccept()、thenApply() 等方法来处理响应。

特点:

  • 非阻塞:不会阻塞当前线程,任务在后台异步执行。
  • 并发执行:允许多个请求并行执行,可以提高效率,尤其是处理大量并发请求时。
  • 适用场景:适用于 I/O 密集型任务,如发送多个请求、等待多个响应时。
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://localhost:8080/get")).GET().build();CompletableFuture<HttpResponse<String>> completableFutureResponse = client.sendAsync(request, HttpResponse.BodyHandlers.ofString());
HttpResponse<String> response = completableFutureResponse.get();

 



身份验证器

Authenticator 是 HttpClient 中用来为 HTTP 请求提供身份验证信息的核心类。Authenticator 的工作原理是基于 认证挑战(Authentication Challenge)机制。认证过程的基本步骤如下:

  1. 客户端发送请求:客户端向服务器发出一个 HTTP 请求,可能是没有认证信息的请求。
  2. 服务器返回认证挑战:如果目标资源需要认证,服务器会返回一个 401 Unauthorized 或 407 Proxy Authentication Required 响应,这两者都表明客户端没有提供有效的身份认证信息。
  3. Authenticator 触发:当 HttpClient 遇到需要认证的响应时,它会调用 Authenticator 的 getPasswordAuthentication() 方法。这是通过一个回调机制触发的,Authenticator 可以返回包含用户名和密码的 PasswordAuthentication 对象。
  4. 客户端再次发送带认证信息的请求:客户端将返回的认证信息(如用户名和密码)包含在 HTTP 请求的 Authorization 头部中,再次发送给服务器。
  5. 认证通过:如果服务器验证通过,返回相应的资源;否则验证失败。

注意:Authenticator 类的设计初衷是为了支持 HTTP 基本认证(Basic Authentication)和 代理认证(Proxy Authentication)等标准认证机制。对于 JWT 认证方式,并没有提供自动刷新。

 


 

参考

Introduction to the Java HTTP Client

​ 

 

http://www.dtcms.com/wzjs/243640.html

相关文章:

  • 国外建站程序天天seo伪原创工具
  • 增加收录网站seo网站建设
  • 电子网站建设价格bt种子磁力搜索引擎
  • 怎么在服务器上面建设网站网站在线客服系统 免费
  • 做银行设计有好的网站参考吗十大少儿编程教育品牌
  • 政府门户网站建设意义搜索引擎关键词怎么选
  • html5响应式网站模版百度一下你就知道了
  • 佛山网站建设多少钱站内关键词排名优化软件
  • 做营销型网站服务南京网站设计优化公司
  • 网站建设公司优惠大酬宾活动电子商务网站建设的步骤
  • 做网站的好处在哪里网站seo检测工具
  • 怎么评价网站的好坏网络管理系统
  • 建公司网站流程关键词收录查询工具
  • 网站开发时如何设计英文版本爱战网关键词
  • 如何自建网站做淘客市场营销方案范文5篇
  • 韩国在中国做美食的视频网站长沙百度搜索网站排名
  • 建设网站要求google推广一年3万的效果
  • 哈尔滨网站制作哪家好薇潍坊网站建设平台
  • 做p2p网站卖赚钱吗论坛推广平台有哪些
  • 四川建设厅网站登录不上咋办店铺推广方案怎么写
  • 重庆市建设工程信息网查证件网站seo优化外包
  • 做网站做本地服务器吗排名推广网站
  • 晨光科技 网站建设昆明网络推广
  • 河南免费网站建设公司最新新闻今天最新新闻
  • 泉州彩票网站建设合肥网站优化方案
  • 网站开发毕业设计摘要范文企业网站建设多少钱
  • 简述网站的建设步骤简述网站推广的意义和方法
  • 做外汇查哪个网站在线工具seo
  • 做网站设计所遇到的问题班级优化大师免费下载安装
  • 在哪里能找到做网站的人关键词排名优化营销推广