Я хочу сделать POST-запрос к сервлету HTTP, который я написал сам. Хороший случай (код ответа HTTP 200) всегда отлично работает при использовании метода URL.openConnection (). Но когда я получаю желаемый код ответа об ошибке (например, 400), я подумал, что мне нужно использовать HttpUrlConnection.getErrorStream (). Но объект ErrorStream имеет значение null, хотя я отправляю данные обратно из сервлета в случае ошибки (я хочу оценить эти данные для генерации сообщений об ошибках). Вот как выглядит мой код:
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 ())
Спасибо