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

questionAnswers(5)

yourAnswerToTheQuestion