ArrayStoreException создание сообщения с использованием Apache httpasyncclient

На самом деле клиент находится в tomcat 8080, а REST API - в 9090. URL будет отличаться при переходе в более высокие среды. Я не вижу звонка в REST API с помощью httpasyncclient. Я скопировал код с веб-сайта Apache https://hc.apache.org/httpcomponents-asyncclient-dev/examples.html

Не уверен, как сделать вызов успешным, хотя я получаю исключение в ответ

CloseableHttpAsyncClient client = HttpAsyncClients.createDefault();
    try {
        client.start();
        JsonObject obj = new JsonObject();
        obj.addProperty("username", "username");
        obj.addProperty("password", "password");



        String serverURL = "http://localhost:9090/project/api";

        HttpPost postRequest = new HttpPost(serverURL);
        StringEntity params = new StringEntity(obj.toString(), "UTF-8");
        params.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "x-www-form-urlencoded"));
        postRequest.setEntity(params);

        Future<HttpResponse> future = client.execute(postRequest, null);
        HttpResponse response = future.get();


    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    } finally {
        try {
            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }    

Я не нашел никакой полезной информации об исправлении этого. Любая помощь сделает мой день

Caused by: java.lang.ArrayStoreException: org.apache.http.impl.cookie.RFC2965VersionAttributeHandler
    at org.apache.http.impl.cookie.DefaultCookieSpecProvider.create(DefaultCookieSpecProvider.java:93)
    at org.apache.http.client.protocol.RequestAddCookies.process(RequestAddCookies.java:152)
    at org.apache.http.protocol.ImmutableHttpProcessor.process(ImmutableHttpProcessor.java:133)
    at org.apache.http.impl.nio.client.MainClientExec.prepareRequest(MainClientExec.java:520)
    at org.apache.http.impl.nio.client.MainClientExec.prepare(MainClientExec.java:146)
    at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:124)
    at org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)
    at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:74)
    at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:107)
    at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:91)

ага говорят

Открытое объявление java.util.concurrent.ExecutionException Исключение, которое выдается при попытке получить результат задачи, которая была прервана с помощью исключения. Это исключение можно проверить с помощью метода getCause().

1 ответ

Наиболее вероятная причина - конфликты в httpclient версия. Например, проектные зависимости включают httpclient а также httpasyncclient, httpasyncclient имеет транзитивную зависимость для другой версии httpclient, В результате зависимость проекта имеет 2 несовместимые версии httpclient, Один из таких случаев с подробным объяснением описан здесь: /questions/38785793/klient-elasticsearch-rest-vyidaet-isklyuchenie-javalangarraystoreexception/38785804#38785804

Другие вопросы по тегам