jdk11的HttpClient

2023-10-20 14:36
文章标签 httpclient jdk11

本文主要是介绍jdk11的HttpClient,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们都知道在jdk11之前都在用okhttp或者org.apache.httpcomponents 
其实早在jdk9的时候这个方案就在孵化中

上面的截图来自openjdk的官网,注:openjdk是个开源项目,不存在侵权现象

这是openjdk的官网:JEP 110: HTTP/2 Client (Incubator) (openjdk.org)

具体出在jdk11 稳定版里面,可以说11版本成型,接下来我举个小例子

package com.example;
import java.net.*;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;public class Main {public static void main(String[] args) throws Exception {HttpClient client= HttpClient.newBuilder().followRedirects(HttpClient.Redirect.ALWAYS).build();HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://baidu.com/")).timeout(Duration.ofMinutes(2)).GET().build();client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.statusCode());System.out.println(response.body());}}

这个例子很简单,就是现在HttpRequest里面构造一下uri ,timeout,Get请求,通过build方法进行构造,不得不说,现在私有化构造器的同时一般都采用建造者模式,又或者为了单一对象考虑,比如说自己类里面new了一个对象,然后搞一个方法return出去,我们还可以通过反射来new 这种类的对象

接下来就是创建 HttpClient的创建,唯一要注意的点是要允许重定向

client 发送请求,send有两个参数,一个是request  另一个是HttpResponse参数类型,并做了转换

后面就是拿到反应结果集,输出就行了

这里我想开一个新的专栏,专门讲jdk8之后的特性

这篇关于jdk11的HttpClient的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/247737

相关文章

HttpClient 接口测试遇到的问题及解决方案

HttpClient的定义: 是一个基于 HttpCore 的客户端 Http 传输类库 基于传统的(阻塞) IO 内容无关       HttpClient 不能做的事情: HttpClient不是浏览器,它是一个客户端http协议传输类库。HttpClient被用来发送和接受Http消息。HttpClient不会处理http消息的内容,不会进行javascript解析,不

HttpClient对webserive测试

原文转自:https://blog.csdn.net/luozhuwang/article/details/21242487 继上一篇SoapUI对webservice进行功能测试,补充用httpclient对webservice进行测试,将返回的数据写到xml中便于查看 [java]  view plain copy @Test      public void test1(

用httpclient模拟登陆网站注意事项

最近一直在用httpclient进行模拟登陆网站,即先用httpwatch记录手动登陆时浏览器与服务器之间的数据交互,然后用httpclient模拟浏览器的行为进行登陆。 但是一开始进行模拟时总是登陆不成功,即使发送的内容与httpwatch中记录的内容一致时,也是返回不了正确的结果,经过网上搜索和尝试,发现是发送请求时,请求头的信息不够完整。同样的请求体,如果把请求头的信息尽量完善,就能够成功

【jdk】jdk11 jdk17 jdk21的新特性

前言:按照博主的个人理解,一般来说 除了jdk8时代 说jdk8的新特性是特指jdk8这一个版本的特性,之后例如jdk11 jdk17新特性 都是泛特性 什么意思呢? 比如jdk11新特性,一般是指jdk9——jdk11 这一个泛版本的所有新特性,就jdk9引入的 List.of Map.of等api 我们也统称是jdk11的新特性 文章目录 为什么大家只提及这几个版本jdk11主要

httpclient编码

问题      使用HttpClient 3.x发送GET或POST请求,请求参数中包含中文。服务器是Tocmat 5.5,通过断点调试,发现Servlet拿到的中文参数是乱码。显然,HttpClient和Tomcat没有就中文参数的编码达成一致。     于是,开始深入HttpClient和Tomcat的代码,结合断点调试,发现中文编码问题并不是想象中的那么简单。 术语约定      为

JDK11移除jaxb导致java.lang.ClassNotFoundException:javax.xml.bind.JAXBException的解决方案

JAXB API被认为是Java EE API,因此不再包含在Java SE 9中的默认类路径中。在Java 11中,它们已从JDK中删除。要解决此问题,需要手动引入。 1、MAVEN引入方式 <dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.2.11</ver

APP server 使用httpclient调用第三方环信的server rest接口获取token

所需要jar包主要是apache httpclient 相关的jar以及操作json转换的jar 这些jar因为本公司的项目没有用maven所以要自己到apache官网下载并导入 当您申请了 AppKey 后,会得到一个xxxx#xxxx 格式的字符串,这个就是您的 AppKey,下文中用到的: org_name 对应#前面部分 app_name 对应#后面部分

【已解决】Android Studio中的gradle无法引用HttpClient库

最近被无法在项目中引用HttpClient库搞得挺郁闷的,Google(英文渣所以查不到)和百度都无法查到最新的相关资料。 碰巧今晚去Google官方文档查了下,终于查到原因了: 原来是我以前手贱更新SDK到预览版,我的SDK环境如下: compileSdkVersion 23 buildToolsVersion "23.0.0" 官方说明如下: 取消支

HttpClient入门学习一

1、HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。   虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apac

c#中WepAPI(post/get)控制器方法创建和httpclient调用webAPI实例

一:WebAPI创建 using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text.RegularExpressions; using System.Web; using System.Web.Http; namespace WebAppli