I am trying to do a POST request with a set of parameters to a given URL. The problem I am having is that the POST request is made, but no parameters are passed.
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url);
StringBuilder sb = new StringBuilder();
for ( String k: parmsRequest.keySet() ) {
String vx = URL.encodeComponent( parmsRequest.get(k));
if ( sb.length() > 0 ) {
sb.append("&");
}
sb.append(k).append("=").append(vx);
}
try {
Request response = builder.sendRequest( sb.toString(), new RequestCallback() {
public void onError(Request request, Throwable exception) {}
public void onResponseReceived(Request request, Response response) {}
});
} catch (RequestException e) {}
}
This works just fine if I use mode GET and manually add the querystring to the request - but I need to use POST as the data to be passed along may be large....
Set the header of your request:
builder.setHeader("Content-type", "application/x-www-form-urlencoded");
This should already work - but when using POST, you'll have to read the submitted data differently in your Servlet (I assume, you're using Java on the server side?)
You could try it with a Servlet like this:
public class MyServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println(req.getReader().readLine());
}
}
Of course, you can copy the contents of req.getReader()
or req.getInputStream()
to your own buffer or string etc.
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