그래서처럼 앞으로 프록시를 통해 내 백엔드 서버로 HTTP/1.x에서 요청을 내 안드로이드 응용 프로그램에서 OkHttp3 사용하고 있습니다 :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은 아래의 첫 번째 3 가지 경우를 지원하지만 네 번째는 지원하지 않습니다. 아래의 HTTP/2는 h2c (HTTP/2 일반 텍스트 이상)가 아닌 h2 (TLS를 통한 HTTP/2)를 의미합니다.
a) 클라이언트 < - HTTP/1.x에서 -> 업스트림 서버
b) 클라이언트 < - HTTP/1.x에서 -> 전달 프록시 < - HTTP/X -> 상향 서버
c) 클라이언트 < - HTTP/2 -> 업스트림 서버
d) 클라이언트 < - HTTP/2 -> 전달 프록시 < - HTTP/X -> 업스트림 서버
누구와 공동으로 작업합니까? 내 이해를 거부하거나 거부 하시겠습니까? 감사.
제시, 나는 초보자이며 주석에 깔끔하게 표현할 수없는 후속 질문이 있습니다. 어떻게해야할지 모르겠군요. 다음 답을 참조하십시오. – hoolam