问题描述
我需要向URL发送POST请求并发送一些请求参数。我正在使用HttpURLConnectionAPI。但我的问题是我在servlet中没有得到任何请求参数。虽然我看到params存在于请求体中,但是当我使用request.getReader打印请求体时。以下是客户端代码。任何正文都可以指定这是否是在POST请求中发送请求参数的正确方法?
I need to send a POST request to a URL and send some request parameters. I am using HttpURLConnectionAPI for this. But my problem is I do not get any request parameter in the servlet. Although I see that the params are present in the request body, when I print the request body using request.getReader. Following is the client side code. Can any body please specify if this is correct way to send request parameters in POST request?
String urlstr = "http://serverAddress/webappname/TestServlet";
String params = "¶mname=paramvalue";
URL url = new URL(urlstr);
HttpURLConnection urlconn = (HttpURLConnection) url.openConnection();
urlconn.setDoInput(true);
urlconn.setDoOutput(true);
urlconn.setRequestMethod("POST");
urlconn.setRequestProperty("Content-Type", "text/xml");
urlconn.setRequestProperty("Content-Length", String.valueOf(params.getBytes().length));
urlconn.setRequestProperty("Content-Language", "en-US");
OutputStream os = urlconn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(params);
writer.close();
os.close();
推荐答案
为了更清洁,你可以编码发送值。
To be cleaner, you can encode to send the values.
String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");
data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
URL url = new URL("http://yourserver.com/whatever");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
这篇关于如何使用HttpUrlConnection在POST请求中发送requestparameter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!