56

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.

2
  • Do you want to send Json data? Commented Nov 16, 2013 at 16:40
  • 1
    @MaximShoustin Can't I simply send it as a String ? I usually do this in iOS : NSString *string = @"x=val1&y=val2"; NSData *postData = [string dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:NO]; [request setHTTPBody:postData]; Commented Nov 16, 2013 at 16:42

2 Answers 2

87

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,

Sign up to request clarification or add additional context in comments.

3 Comments

It's not valid JSON to use simple quotes in key names. :p
@JulienPalard tnx, fixed
Complete example here :) guruparang.blogspot.com/2016/01/…
5

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).

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.