java.io.IOException: Server returned HTTP response code: 411
This is because some Web servers will reject a request made to the Web server using HTTP POST without providing the appropriate BODY data. We can see the official story disseminated in explanation of the error code 411 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) :
10.4.12 411 Length Required
The server refuses to accept the request without a defined Content- Length. The client MAY repeat the request if it adds a valid Content-Length header field containing the length of the message-body in the request message.
The solution is to set content-length =0 in the request header and write an empty BODY data into the OutputStream.
URL the URL = new URL (” http://www.webservicex.net/MortgageIndex.asmx/GetCurrentMortgageIndexByWeekly “);
final HttpURLConnection conn = (HttpURLConnection) url.openconnection ();
conn. SetDoInput (true);
conn. SetDoOutput (true);
conn. SetRequestMethod (” POST “);
conn. SetRequestProperty (” the content-type “, “text/XML”);
conn. SetRequestProperty (” the Content – Length “, “0”);
DataOutputStream OS = new DataOutputStream(conn. GetOutputStream ());
OS. Write (“. “getBytes (” utf-8″), 0, 0).
OS. Flush ();
OS. The close ();
conn. The connect ();
InputStream is = conn. GetInputStream ();
Integer code = conn. GetResponseCode ();
final String contentType = conn. GetContentType ();
System. Out. Println (code + + contentType “:”);