Frage get body von Bad Request httpURLConnection.getInputStream ()


Ich arbeite an einem Portlet, das den Restful-Webdienst verwendet, um Informationen zu erhalten. Wenn ich also den Webservice und die Personen-ID nicht anrufe, wird eine entsprechende Fehlermeldung angezeigt im JSON-Format (mit ungültigem Anforderungscode - 400), und wenn die Personen-ID gültig ist, geben Sie die Personendaten in JSON (mit Code 200) zurück.

jetzt, wie kann ich Körper der Antwort lesen (die Fehlerbeschreibung enthalten), weil Durch das Aufrufen von "httpConn.getInputStream ()" wird die Ausnahme im Modus für ungültige Anforderungen ausgelöst.

dieser Teil meines Codes:

HttpURLConnection httpConn = null;
URL url = new URL("http://192.168.1.20/personinfo.html?id=30");   
URLConnection connection = url.openConnection();
httpConn = (HttpURLConnection) connection;
httpConn.setRequestProperty("Accept", "application/json");
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("charset", "utf-8");
System.out.println("befor getInputStream *******");
BufferedReader br = null;
if (!(httpConn.getResponseCode() == 400)) {
     br = new BufferedReader(new InputStreamReader((httpConn.getInputStream())));
     String output;
     StringBuilder builder = new StringBuilder();
     System.out.println("Output from Server .... \n");
     while ((output = br.readLine()) != null) 
          builder.append(output);
     return builder.toString();
}else
   here must detect error message. :)

14
2018-02-03 11:23


Ursprung


Antworten:


Benutze Apache Httpclient:

        String url = "http://192.168.1.6:7003/life/lifews/getFirstInstallment.html?rootPolicyNo=1392/2126/2/106/9995/1904&token=1984";
        HttpClient client = HttpClientBuilder.create().build();
        HttpGet request = new HttpGet(url);

        // add request header
        HttpResponse response = client.execute(request);
        System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
        BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        StringBuffer result = new StringBuffer();
        String line = "";
        while ((line = rd.readLine()) != null)
            result.append(line);
        System.out.println(result);

2
2018-02-03 14:28



Bei nicht erfolgreichen Antwortcodes müssen Sie den Text mit lesen HttpURLConnection.getErrorStream ().


33
2018-02-03 14:11



Sie können Körper von Bad Request in erhalten HttpURLConnection mit diesem Code:

InputStream errorstream = connection.getErrorStream();

String response = "";

String line;

BufferedReader br = new BufferedReader(new InputStreamReader(errorstream));

while ((line = br.readLine()) != null) {
    response += line;
}

Log.d("body of Bad Request HttpURLConnection", "Response: " + response);

6
2017-11-07 07:43