Если inputStream имеет значение null, попробуйте перехватить NPE и вместо этого прочитать errorStream. (только на Android 4.1.2 - не знаю почему)

у сделать запрос 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 ()).

Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос