Вызов REST, вызывающий java.io.EOFException - PullRequest
0 голосов
/ 18 декабря 2018

Я выполняю вызов веб-службы REST через брандмауэр со следующим кодом:

try {
    String url="http://testcall.us:1300/abc/testapi/json/method1"; //dummy url
    Client client = Client.create();
    WebResource webResource = client.resource(url);

    ClientResponse response = webResource.accept("application/json")
        .type(MediaType.APPLICATION_JSON)
        .header("content-type", "application/json")
        .get(ClientResponse.class);                         

    System.out.println("response.getStatus" + response.getStatus());
} catch (Exception e) {
    logger.error("Error making webservice call", e);
}

Код отлично работает в моей локальной среде Windows.Но когда я делаю тот же запрос с другого сервера Linux, я получаю следующее исключение:

com.sun.jersey.api.client.ClientHandlerException: java.io.EOFException: Response had end of stream after 0 bytes
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155)
at com.sun.jersey.api.client.Client.handle(Client.java:652)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
.......
.......

Caused By: java.io.EOFException: Response had end of stream after 0 bytes
at weblogic.net.http.MessageHeader.isHTTP(MessageHeader.java:312)
at weblogic.net.http.MessageHeader.parseHeader(MessageHeader.java:232)
at weblogic.net.http.HttpClient.parseHTTP(HttpClient.java:554)
at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:688)
......
......

Когда я делаю другой запрос POST с того же URL-адреса (другим методом),

try {
    String url="http://testcall.us:1300/abc/testapi/json/method2"; //dummy url
    Client client = Client.create();

    WebResource webResource = client
            .resource(url);                    

    String input = "{\"Id\":" + String.valueOf(id) + ",\"Status\":" + null + "}";

    ClientResponse response = webResource.type("application/json")
            .header("Environment", "dev")
            .accept("application/json")
            .post(ClientResponse.class, input);

    if (response.getStatus() != 200 && response.getStatus() != 201) {
        logger.error("REST ws call failed. HTTP error code : " + response.getStatus());
    }

    System.out.println("Output from Server .... \n");
    String output = response.getEntity(String.class);
    System.out.println(output);

} catch (Exception e) {
    logger.error("Error submitting request", e );
}

Я получаю следующее исключение:

<Error submitting request
com.sun.jersey.api.client.ClientHandlerException: java.io.IOException: Connection reset by peer
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155)
at com.sun.jersey.api.client.Client.handle(Client.java:652)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570)
.....
.....
Caused By: java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcherImpl.readv0(Native Method)
at sun.nio.ch.SocketDispatcher.readv(SocketDispatcher.java:43)
at sun.nio.ch.IOUtil.read(IOUtil.java:278)

Этот метод снова прекрасно работает в моей локальной среде.Что может быть причиной того, что тот же URL-адрес вызывает исключение, пока он отлично работает в другой среде?Насколько мне известно, правила брандмауэра были одобрены для среды Linux.Заранее благодарим за понимание.

ОБНОВЛЕНИЕ Я только что обнаружил, что правило брандмауэра, представленное для этого URL, содержало «https» вместо «http».Но, насколько я знаю, брандмауэр не заботится, является ли он «http» или «https».У меня нет доступа к машине с Linux, поэтому я не могу проверить, можем ли мы получить ответ, используя там URL :(.

ОБНОВЛЕНИЕ Используя команду 'curl' на putty, я могуполучить ответ на сервере Linux. Означает ли это, что чего-то не хватает в конфигурациях java / weblogic ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...