Errorstream em HttpUrlConnection
Eu quero fazer uma solicitação POST para um Servlet HTTP que eu mesmo escrevi. Caso bom (código de resposta HTTP 200) sempre funciona bem usando o método URL.openConnection (). Mas quando recebo o código de resposta de erro desejado (por exemplo, 400), pensei em usar HttpUrlConnection.getErrorStream (). Mas o objeto ErrorStream é nulo, embora eu esteja enviando dados de volta do servlet em caso de erro (desejo avaliar esses dados para gerar mensagens de erro). É assim que meu código se parece:
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();
}
Então, minha pergunta é: por que retorna getErrorStream () nulo, embora o código de status seja 400 (eu posso vê-lo na IOException lançada quando chama con.getInputStream ())
Obrigad