我使用OkHttp3在我的Android应用程序通过转发代理来进行HTTP/1.x的请求,我的后端服务器,就像这样:OkHttp3是否通过HTTP转发代理支持HTTP2?
List<Protocol> protos = new ArrayList<>();
protos.add(Protocol.HTTP_2);
protos.add(Protocol.HTTP_1_1);
InetSocketAddress proxyAddr = new InetSocketAddress("proxy.example.com", 80);
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddr);
OkHttpClient cli = new OkHttpClient.Builder()
.proxy(proxy)
.protocols(protos)
.build();
String url = "http://www.example.com/";
Request req = new Request.Builder().url(url).build();
Response res = cli.newCall(req).execute();
我想升级到HTTP2。但是,在我看来,OkHttp3只有在我们不通过HTTP代理时才能发出HTTP2请求。所以,上面的代码将无法工作。
换句话说,OkHttp3支持以下前三种情况,但不支持第四种情况。下面的HTTP/2意味着h2(HTTP/2 over TLS)而不是h2c(HTTP/2 over clear text)。
一个)客户端< - HTTP/1.x的 - >上游服务器
b)中的客户端< - HTTP/1.x的 - >转发代理< - HTTP/X - >上游服务器
c)中的客户端< - HTTP/2 - >上游服务器
d)客户端< - HTTP/2 - >转发代理< - HTTP/X - >上游服务器
有没有人否认或否认我的理解?谢谢。
杰西,我是一个SO新手,我有一个后续问题,无法在评论中表达干净 - 我不知道该怎么做。请看下一个答案。 – hoolam