Как общаться с Kubernetes через HTTP / 2-запрос с использованием Java-клиента Kubernetes? - PullRequest
0 голосов
/ 03 октября 2018

Пожалуйста, помогите мне здесь, поскольку я новичок в этом.Моя цель - заставить мое приложение получать или отправлять запросы по протоколу 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

Любые предложения или другие способы достижения этой цели будут очень полезны.

...