GWT POST request parameters HTTP HTML RequestBuilder AJAX
Problem:
Following the GWT documentation for making a http-post but it's not clear what the post data should look like if you want it to include form parameters. The newer documentation for com.google.gwt.http.client has a bit more detail but the server side code processing the request (a java servlet) says there's no parameters in the request.
Solution:
It's not in the documentation, but if you want to post form data you must set the "Content-type" header value in the request to "application/x-www-form-urlencoded"
For Example:
StringBuffer postData = new StringBuffer(); // note param pairs are separated by a '&' // and each key-value pair is separated by a '=' postData.append(URL.encode("YourParameterName")).append("=").append(URL.encode("YourParameterValue")); postData.append("&"); postData.append(URL.encode("YourParameterName2")).append("=").append(URL.encode("YourParameterValue2")); RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "/yourserver/formprocessor")); builder.setHeader("Content-type", "application/x-www-form-urlencoded"); try { builder.sendRequest(postData.toString(), this /* or other RequestCallback impl*/); } catch (RequestException e) { // handle this }
Notes:
This sample chapter from the JavaScript™ Phrasebook is useful: Sending a POST Request
14 comments:
This is great thank, I just spent the last 4 hours trying to work out why it wasnt work
Thanks,
This was very helpful:) saved me alot of time.
Thanks a lot!!!!
Wonderful :)
thanks a lot!! you saved my day!!
thanks it's helpful again thank you !
Thanks a lot! Tried hard the last few hours and now at least this point works!
Thanks,
i was looking for houres...
Thank you! Saved my time!
Alternative:
StringBuffer postData = new StringBuffer();
// note param pairs are separated by a '&'
// and each key-value pair is separated by a '='
postData.append(URL.encode("YourParameterName")).append("=").append(URL.encode("YourParameterValue"));
postData.append("&");
postData.append(URL.encode("YourParameterName2")).append("=").append(URL.encode("YourParameterValue2"));
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "/yourserver/formprocessor"));
builder.setHeader("Content-type", "application/x-www-form-urlencoded");
builder.setRequestData(postData);
builder.setCallback(this /* or other RequestCallback impl*/);
try {
builder.send();
} catch (RequestException e) {
// handle this
}
This was really helpful and saved my time. Has anyone of you guys tested this code for file uploading?
Thanks a Lot!
Thx, very helpful
thnks
Post a Comment