I've already created my HTTPUrlConnection :
String postData = "x=val1&y=val2"; URL url = new URL(strURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Set-Cookie", sessionCookie); conn.setRequestProperty("Content-Length", "" + Integer.toString(postData.getBytes().length)); // How to add postData as http body? conn.setUseCaches(false); conn.setDoInput(true); conn.setDoOutput(true);
I don't know how to set postData in http body. How to do so? Would I better use HttpPost
instead?
Thanks for your help.
Here is some code to add query parameters into an HTTP request using Java: URL url = new URL("https://api.github.com/users/google"); HttpURLConnection con = (HttpURLConnection) url. openConnection(); con. setRequestMethod("POST"); con.
HttpsURLConnection extends HttpURLConnection , and your connection is an instance of both. When you call openConnection() the function actually returns an HttpsURLConnection . However, because the https object extends the http one, your connection is still an instance of an HttpURLConnection .
If you want to send String only try this way:
String str = "some string goes here"; byte[] outputInBytes = str.getBytes("UTF-8"); OutputStream os = conn.getOutputStream(); os.write( outputInBytes ); os.close();
But if you want to send as Json change Content type to:
conn.setRequestProperty("Content-Type","application/json");
and now our str
we can write:
String str = "{\"x\": \"val1\",\"y\":\"val2\"}";
Hope it will help,
Guruparan's link in the comment above gives a really nice answer to this question. I highly recommend looking at it. Here is the principle that makes his solution work:
From what I understand, the HttpURLConnection represents the response body as an OutputStream. So you need to call something like:
get the connection's output stream
OutputStream op = conn.getOuputStream();
write the response body
op.write( [/*your string in bit form*/] );
close the output stream
op.close();
and then carry on your merry way with the connection (which you will still need to close).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With