Я хочу сделать запрос POST к сервлету HTTP, который я написал сам. Хороший случай (HTTP-код ответа 200) всегда работает нормально, используя метод URL.openConnection (). Но когда я получил желаемый код ответа об ошибке (например, 400), я подумал, что должен использовать HttpUrlConnection.getErrorStream (). Но объект ErrorStream является нулевым, хотя я отправляю данные обратно из сервлета в случае ошибки (я хочу оценить эти данные для генерации сообщений об ошибках).
Вот как выглядит мой код:
HttpURLConnection con = null;
try {
//Generating request String
String request = "request="+URLEncoder.encode(xmlGenerator.getStringFromDocument(xmlGenerator.generateConnectRequest(1234)),"UTF-8");
//Receiving HttpUrlConnection (DoOutput = true; RequestMethod is set to "POST")
con = openConnection();
if (con != null){
PrintWriter pw = new PrintWriter(con.getOutputStream());
pw.println(request);
pw.flush();
pw.close();
InputStream errorstream = con.getErrorStream();
BufferedReader br = null;
if (errorstream == null){
InputStream inputstream = con.getInputStream();
br = new BufferedReader(new InputStreamReader(inputstream));
}else{
br = new BufferedReader(new InputStreamReader(errorstream));
}
String response = "";
String nachricht;
while ((nachricht = br.readLine()) != null){
response += nachricht;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Итак, мой вопрос: почему getErrorStream () возвращает null, хотя код состояния равен 400 (я вижу это в IOException, которое выдается при вызове con.getInputStream ())
Спасибо