Я хочу сделать запрос 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())
Спасибо