httpconnection.getResponseCode (), выдающий исключение EOF - PullRequest
2 голосов
/ 06 октября 2009

Я использую Httconnection для подключения к веб-серверу, иногда запрос не выполняется,

EOFException при вызове httpconnection.getResponseCode ().

Я устанавливаю следующие заголовки при установлении соединения

HttpConnection httpconnection = (HttpConnection) Connector.open(url.concat(";interface=wifi"));
httpconnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
httpconnection.setRequestProperty("Content-Language", "en-US");

Я закрываю все соединения после обработки запроса должным образом. Это исключение из-за превышения максимального количества соединений.

Ответы [ 2 ]

2 голосов
/ 07 октября 2009

Это внутренняя ошибка сервера, которая возвращает код состояния 500 в ответ.

Это может быть вызвано неправильным запросом, но также причиной может быть код сервера или перегрузка.
Если у вас есть доступ к серверу, проверьте журналы событий.

Смотри также
500 EOF, когда ожидается заголовок куска
Почему LWP :: UserAgent может не работать с '500 EOF'?
500 EOF вместо строки состояния ответа в скрипте Perl
Ошибка Apache 1.3 - Неожиданное состояние HTTP чтения EOF - сброс соединения
Ошибка 500!

ОБНОВЛЕНИЕ С другой стороны, если это не ответное сообщение, а настоящее исключение, то это может быть просто ошибка, , как в старой Java
И временное решение может заключаться в том, чтобы поместить getResponseCode () в try / catch и вызвать второй раз при исключении:

    int responseCode = -1;
    try {
        responseCode = con.getResponseCode();
    } catch (IOException ex1) {
        //check if it's eof, if yes retrieve code again
        if (-1 != ex1.getMessage().indexOf("EOF")) {
            try {
                responseCode = con.getResponseCode();
            } catch (IOException ex2) {
                System.out.println(ex2.getMessage());
                // handle exception
            }
        } else {
            System.out.println(ex1.getMessage());
            // handle exception
        }
    }

Говоря по количеству подключений, читайте
Что такое - Максимальное количество одновременных подключений
How To - Закрыть соединения

0 голосов
/ 20 апреля 2016

Используя HTTPTransportSE, напишите это, прежде чем вызывать метод "call"

ArrayList<HeaderProperty> headerPropertyArrayList = new ArrayList<HeaderProperty>();
headerPropertyArrayList.add(new HeaderProperty("Connection", "close"));
transport.call(SOAP_ACTION, envelope, headerPropertyArrayList);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...