How to resolve "HTTP Error 411. The request must be chunked or have a content length." in java

Viewed 20873

I am using HttpConnect and trying to get some token from the server. But whenever I try to get the response, its always saying you have not set or problem with content length even I tried to set the content length in many different ways

conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod(method);
conn.setRequestProperty("X-DocuSign-Authentication", httpAuthHeader);
conn.setRequestProperty("Accept", "application/json");
if (method.equalsIgnoreCase("POST")) {
  conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  conn.setRequestProperty("Content-Length", Integer.toString(body.length()));
            conn.setDoOutput(true);
}


status = conn.getResponseCode(); // triggers the request
if (status != 200) { //// 200 = OK 
    errorParse(conn, status);
    return;
}

InputStream is = conn.getInputStream();
2 Answers

Moving away from HttpConnect to HttpClient worked for me. So I moved away from HttpURLConnection and created an http HttpClient object and call execute methods to get data from the server.

Below is the code which make http request using HttpClient rather HttpURLConnection

try {
  HttpClient httpclient = new DefaultHttpClient();
  HttpPost httpPost = new HttpPost(authUrl);
  String json = "";
  JSONObject jsonObject = new JSONObject();
  jsonObject.accumulate("phone", "phone");
  json = jsonObject.toString();
  StringEntity se = new StringEntity(json);
  httpPost.setEntity(se);

  httpPost.addHeader("Accept", "application/json");
  httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");

  HttpResponse httpResponse = httpclient.execute(httpPost);

  // 9. receive response as inputStream
  inputStream = httpResponse.getEntity().getContent();
  String response = getResponseBody(inputStream);

  System.out.println(response);

} catch (ClientProtocolException e) {
  System.out.println("ClientProtocolException : " + e.getLocalizedMessage());
} catch (IOException e) {
  System.out.println("IOException:" + e.getLocalizedMessage());
} catch (Exception e) {
  System.out.println("Exception:" + e.getLocalizedMessage());
}
Related