Я использую вызов HttpsURLConnection, чтобы получить ответ от HTTP-сервлета с сообщением и кодом ошибки. Ниже некоторые фрагмент кода из моего кода: -HttpsURLConnection.getResponseCode() возвращает -1 вместо 1001 или 1002 или 1003
connection = (HttpsURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
// Headers
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-type", "text/xml");
connection.setRequestProperty("Accept", "text/plain");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Authorization", authorization);
connection.connect();
С HTTPServlet стороны, я ставлю StatusCode и описание: -
response.setStatus(code);
response.getWriter().write(returnDescription);
Все выше код существующий код и он работает отлично, за исключением. Он должен вернуть код состояния в качестве кода ответа. Но несколько кодов не работают как 1001 1002 или 1003. Если я установил response.setStatus (1001), он возвращает -1 в качестве responseCode() на стороне клиента с помощью «java.io.IOException: Invalid Http response». Для любого другого целочисленного значения, такого как 1101,1102, 1232 и т. Д., Он отлично работает. Я отлаживал код и обнаружил, что сервлет устанавливает правильные значения, но клиент не может разобрать ответ. И когда вы меняете код состояния с некоторым другим числовым значением, он начинает работать правильно! Я получаю такое же поведение как в HTTP, так и в HTTPS. Кажется, что эти неработающие коды являются предопределенными кодами с определенной целью и не могут использоваться в качестве кода состояния, но я ничего не нашел в Интернете. Кто-нибудь испытал то же самое и что могло быть причиной.
Заранее благодарен! :)
спасибо @BJ Черный. Это отвечает на мой вопрос. Я должен был проанализировать больше. –
Я бы не стал слишком сильно потеть. Я был программистом на Java очень долго, и это ни в коем случае не было очевидным. –