KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm using Apache HttpComponents Client to POST to a server that returns JSON. The problem is that if the server returns a 400 error, I seem to have no way of telling what the error was from Java (had to resort to a packet sniffer so far - ridiculous). Here is the code: HttpClient httpclient = new DefaultHttpClient(); params.add(new BasicNameValuePair("format", "json")); params.add(new BasicNameValuePair("foo", bar)); HttpPost httppost = new HttpPost(uri); // this is how you set the body of the POST request httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); String responseBody = ""; try { // Create a response handler ResponseHandler<String> responseHandler = new BasicResponseHandler(); responseBody = httpclient.execute(httppost, responseHandler); } catch(HttpResponseException e) { String error = "unknown error"; if (e.getStatusCode() == 400) { // TODO responseBody and e.detailMessage are null here, // even though packet sniffing may reveal a response like // Transfer-Encoding: chunked // Content-Type: application/json // // 42 // {"error": "You do not have permissions for this operation."} error = new JSONObject(responseBody).getString("error"); // won't work } // e.getMessage() is "" } What am I doing wrong? There must be an easy way to get the message of a 400 error. This is elementary.
Tags (comma-separated)
Save Edits
Cancel