Пожалуйста, помогите мне здесь, поскольку я новичок в этом.Моя цель - заставить мое приложение получать или отправлять запросы по протоколу HTTP / 2.
Я разместил свое приложение на веб-сервере undertow с включенным HTTP / 2.Я протестировал свое приложение с помощью Java HttpClient и создал запрос HTTP / 2, и ответ был также в HTTP / 2.
Теперь я также добавил Java-Api-Client для Kubernetes поговорить с сервером kubernetes.По умолчанию этот клиент использует HTTP / 1.1.Я хочу, чтобы это было включено HTTP / 2.
Выводы :
1] При прохождении своей реализации клиента Java они внутренне используют okHttpClient для создания запроса.Я пытался разрешить этому клиенту использовать HTTP / 2, но сервер всегда отвечает мне HTTP / 1.1
Код :
public class AppClient {
/**
* @param args
*/
public static void main(String[] args) {
try {
ClientUtils.okHttpClient(false, "localhost:8080/");
} catch (Exception e) {
e.printStackTrace();
System.out.println("message " + e);
}
}
public static void okHttpClient(boolean sslEnabled, String uri) throws IOException, InterruptedException {
ApiClient client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
System.out.println("//-------OkHTTP Client-------//");
if (sslEnabled) {
System.out.println("//---SSL Enabled---//");
uri = "https://" + uri;
client.setHttpClient(getUnsafeOkHttpClient());
} else {
System.out.println("//---SSL Disabled---//");
uri = "http://" + uri;
}
// Setting HTTP/2 here. As per their instruction HTTP/1.1 should be there in the list.
// Else setProtocol() function will throw error.
client.getHttpClient().setProtocols(Arrays.asList(Protocol.HTTP_1_1, Protocol.HTTP_2));
System.out.println("OkHttpClient Http Version available: " + client.getHttpClient().getProtocols());
Request request = new Request.Builder().url(uri).build();
Response response = client.getHttpClient().newCall(request).execute();
System.out.println("Response status code: " + response.code());
System.out.println("Response headers: " + response.headers());
System.out.println("Response http version: " + response.protocol());
System.out.println("Response body: " + response.body());
}
}
Вывод:
//-------OkHTTP Client-------//
//---SSL Disabled---//
OkHttpClient Http Version available: [http/1.1, h2]
Response status code: 200
Response headers: Connection: keep-alive
Content-Type: text/plain;charset=UTF-8
Content-Length: 12
Date: Wed, 03 Oct 2018 05:28:39 GMT
OkHttp-Sent-Millis: 1538544519469
OkHttp-Received-Millis: 1538544519601
Response http version: http/1.1
Response body: com.squareup.okhttp.internal.http.RealResponseBody@3932c79a
Любые предложения или другие способы достижения этой цели будут очень полезны.