jdk 8 使用okhttp3 实现 http2

在爬虫,发现一个很特殊的请求头::authority, :method, :path, :scheme。几番操作,要不无法解析请求头,要不就是得不到正确的结果。历时至少一天了,整个搜索逻辑我也贴一下,蓝灯翻不了,用百度要死,每一个正确,搜索的内容答非所问,发现bing搜索可以代替一下谷歌。

在此圈粉bing搜索,还分国内和国际版:http://cn.bing.com

一般情况的请求头为http1的请求头,如下:

最近做爬虫,发现一个请求头如下:

我便按一般的设置,结果会爆一下的错误:

ValueError: Invalid header name b':authority'

经过一番的搜索(不要用百度,百度弱鸡,不能用谷歌,就用bing吧),

发现是源码无法解析的问题:

显然,我们必须在Java还没有准备好支持HTTP2客户端编程的情况下(即使用Java 8及以下版本),提供HTTP2客户端应用的解决方案。目前流行的类库如下:

  1. OkHttp
  2. Eclipse Jetty
  3. Netty
  4. Apache HttpComponents (Apache HC)

其中,Eclipse Jetty和Netty都同时提供客户端和服务端。而曾经广泛使用的Apache HC已经逐渐掉队,至今没有正式支持HTTP2的版本发布。所以这里特别推荐OkHttp,而且OkHttp还适合在Android应用中作为HTTP客户端。

OkHttp的最新版本3.10.0,2018年2月25日发布,特性如下:

  1. 支持HTTP2,默认采用TLS 1.2
  2. GZIP压缩
  3. 缓存响应对象

准备jar包

二丶get请求

package com.lxl.learn.okhttp3;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class Learn_Okhttp3 {

    public static voi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_深巷的猫

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值