jdk8使用okhttp发送http2请求

这篇具有很好参考价值的文章主要介绍了jdk8使用okhttp发送http2请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要用于工作记录,在项目中遇到了就记录一下

在早期,原生的JDK8是不支持HTTP/2协议的,所以,要想使用这个特性,需要有web服务器和应用环境的支持,
例如:在VM中增加-Xbootclasspath/p:/Users/a1234/Downloads/alpn-boot-8.1.11.v20170118.jar来配合使用

但是从8u252开始,ALPN层已经从Java 11向后移植到了Java 8。意味着,只要使用Java
8u252或更新版本,不再要求使用Conscrypt和Jetty就可以使用HTTP/2了。

重点来了:一定要先检查自己的jdk版本是否大于8u252,然后就可以在项目中集成okhttp

项目pom配置

<!-- SpringBoot 依赖配置 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.7.2</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<!-- okhttp 依赖配置 -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.9.3</version>
</dependency>

简单封装获取http2client请求

 	/**
     * 获取httpClient请求
     *
     * @param maxTotalConnections             最大连接数
     * @param connectionKeepAliveTimeInMillis 最长连接保持活动时间
     * @return
     */
    private static OkHttpClient createHttpClient(int maxTotalConnections, long connectionKeepAliveTimeInMillis) {
        ConnectionPool connectionPool = new ConnectionPool(maxTotalConnections, connectionKeepAliveTimeInMillis, TimeUnit.MILLISECONDS);
        return new OkHttpClient.Builder()
                .followRedirects(false)
//                .protocols(Collections.singletonList(Protocol.H2_PRIOR_KNOWLEDGE))
                .retryOnConnectionFailure(true)
                .connectionPool(connectionPool)
                .build();
    }

GET请求示例

	/**
     * GET请求示例
     *
     * @return
     * @throws IOException
     */
    private String getTokenResStr() throws IOException {
        Request request = new Request.Builder()
                .addHeader("Nonce",123)
                .addHeader("Authorization", configData.getAuthorizationCode())
                .url(“url地址”)
                .build();//GET by default
        OkHttpClient httpClient = createHttpClient(100, 30000);
        Response response = httpClient.newCall(request).execute();
        if (!response.isSuccessful()) {
            throw new IOException("Unexpected code " + response);
        }
        return response.body().string();
    }

POST请求示例文章来源地址https://www.toymoban.com/news/detail-621754.html

	/**
     * POST请求示例
     *
     * @param orderId
     * @param tokenResStr
     * @return
     * @throws IOException
     */
    private String getOrderDetail(String orderId, String tokenResStr) throws IOException {
        JSONObject tokenRes = JSONObject.parseObject(tokenResStr);
        // token
        String accessToken = tokenRes.getString("access_token");
        // token类型
        String tokenType = tokenRes.getString("token_type");

        String authorizationStr = firstUpperCase(tokenType) + " " + accessToken;
        Request request = new Request.Builder()
                .addHeader("Authorization", authorizationStr)
                .addHeader("Content-Type", "application/json")
                .url(configData.getDetailRpcUrl() + orderId)
                .build();
        OkHttpClient httpClient = createHttpClient(100, 30000);
        Response response = httpClient.newCall(request).execute();
        if (!response.isSuccessful()) {
            throw new IOException("Unexpected code " + response);
        }
        return response.body().string();

到了这里,关于jdk8使用okhttp发送http2请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker 中 jdk8容器里无法使用 JDK 的 jmap 等命令的问题

    项目部署在 CentOS 服务器上。项目偶尔会出现无响应的情况,这时理所当然要上去用 JDK 相关命令看看堆栈和GC等信息了。 进入 Java 程序所在容器:docekr-compose exec api bash,进入到 api 容器的 bash 终端。 jps 打印 Java 进程: 嗯,jps 命令还是能正常使用的,api.jar 程序的进程号是

    2024年02月09日
    浏览(38)
  • java jdk8 switch case中无法使用枚举问题解决

    之前常规写法: 代码会报错: 此时在枚举中添加方法: 代码中改为: idea自编译不报错, 经测试也可以用 枚举完整代码: 参考: 「Java基础入门」Java中switch怎么使用枚举 - 掘金

    2024年04月25日
    浏览(42)
  • 使用IDEA创建使用 JDK8 的 2.x.x 版本的 Spring Boot 项目以及 Spring Boot 项目如何修改JDK版本

    目录 一、在阿里云上官网上创建项目 二、将 IDEA 中创建项目的源地址修改为阿里云官网 三、创建 3.x.x 的项目之后修改配置降低至 2.7.x 版本和使用 JDK8(修改 Spring Boot 的 JDK 版本同理) 从上面的 Spring Boot 官网的截图中可以发现,自 2023-11-24 之后,最后一个支持使用 JDK8 的

    2024年01月21日
    浏览(62)
  • OkHttp搞定Http请求

    官方文档 仓库 OkHttp是一款高效的HTTP客户端框架: HTTP/2支持允许对同一主机的所有请求共享一个套接字。 连接池可以减少请求延迟(如果HTTP/2不可用)。 透明GZIP压缩下载大小。 响应缓存完全避免了重复请求的网络。 当网络出现问题时,OkHttp会自动恢复一般的连接问题;若服务

    2024年02月02日
    浏览(33)
  • electron项目打包之后显示空白页面以及发送http请求地址错误

            electron项目在开发阶段,因为使用webpack脚手架,启用了webServer提供的http服务,所以有路由功能,当我们运行npm run electron:serve的时候,最后可以直接加载http://localhost:8080。在app里面就可以显示页面。     当electron项目打包之后,成为桌面程序,这个时候就没有http服务支

    2024年02月13日
    浏览(36)
  • 使用Go发送HTTP POST请求

    在Go语言中,我们可以使用 net/http 包来发送HTTP POST请求。以下是一个简单的示例,展示了如何使用Go发送HTTP POST请求并获取响应。 go 复制代码 package  main import  ( \\\"bytes\\\"   \\\"fmt\\\"   \\\"io/ioutil\\\"   \\\"net/http\\\"   ) func   main ()  { // 创建一个HTTP客户端 client := http.Client{} // 创建一个POST请求

    2024年01月23日
    浏览(45)
  • NIFI使用InvokeHTTP发送http请求

    这里介绍四种平时常用的http请求方法:GET、POST、PUT、DELETE。 在官方的介绍文档中关于InvokeHTTP处理器的描述是这么说的: An HTTP client processor which can interact with a configurable HTTP Endpoint. The destination URL and HTTP Method are configurable. FlowFile attributes are converted to HTTP headers and the FlowFile

    2024年02月09日
    浏览(86)
  • 使用Go发送HTTP GET请求

    在Go语言中,我们可以使用 net/http 包来发送HTTP GET请求。以下是一个简单的示例,展示了如何使用Go发送HTTP GET请求并获取响应。 go 复制代码 package  main import  ( \\\"fmt\\\"   \\\"io/ioutil\\\"   \\\"net/http\\\"   ) func   main ()  { // 创建一个HTTP客户端 client := http.Client{} // 创建一个GET请求 req, err :=

    2024年01月23日
    浏览(44)
  • C++使用HTTP库和框架轻松发送HTTP请求

    使用C++编程发送HTTP请求通常需要使用第三方的HTTP库或框架。在C++中,有几个受欢迎的HTTP库可供选择,例如Curl、Boost.Beast和cpp-httplib。另外,也可以自己实现socket来发送http请求。 (1)安装Curl库 。 对于Debian/Ubuntu系统: 对于RHEL/CentOS系统: 对于macOS系统: (2)编写Curl代码

    2024年02月02日
    浏览(44)
  • 使用浏览器发送HTTP POST请求

    HTTP请求有如下几个分类,其中最常见和常用的是GET和POST请求。  一般来说,使用浏览器地址栏访问域名或ip时能且仅能向浏览器服务端发送get请求,如果需要发送POST请求或其他类型http请求需要借助接口工具譬如postman。 如果某个web应用部署环境下缺少接口调试工具,该如何

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包