设置了conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")还是get请求是怎么回事
时间: 2024-06-06 13:06:31 浏览: 111
设置了"Content-Type"为"application/x-www-form-urlencoded"只是告诉服务器请求的数据类型为表单数据,并不表示请求方式一定是POST。如果请求方式是GET,那么请求的参数会拼接在请求URL的后面,而不是放在请求体中,因此设置"Content-Type"并不会影响请求方式。如果要发送POST请求,需要通过conn.setRequestMethod("POST")来指定请求方式为POST。
相关问题
设置了conn.setRequestMethod("POST")和conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")还是get请求是怎么回事
如果你设置了`conn.setRequestMethod("POST")`和`conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")`,但仍然收到GET请求,可能是由于以下原因:
1. 检查URL是否正确,确保它指向POST请求的端点。
2. 确保在请求正文中提供了正确的参数,并且参数已编码为URL编码格式,例如在`application/x-www-form-urlencoded` MIME类型中。
3. 检查服务器端是否正确处理了POST请求,并对请求进行了正确的响应。
4. 如果你使用的是代理服务器,则可能会导致该问题。检查代理服务器设置是否正确,并确保不会将POST请求转换为GET请求。
总之,你需要仔细检查请求的各个方面,以确定问题的原因。
Http请求工具类 怎么使用application/x-www-form-urlencoded
使用Http请求工具类发送 application/x-www-form-urlencoded 格式的数据,需要按照以下步骤:
1. 创建一个HttpURLConnection对象,设置请求方式为POST,设置请求URL地址。
2. 设置请求头部信息,包括Content-Type和Content-Length两个参数。Content-Type设置为application/x-www-form-urlencoded,Content-Length设置为请求参数的长度。
3. 获取输出流,将请求参数写入输出流中,使用URL编码方式进行编码。
4. 发送请求,获取响应结果。
下面是一个Java代码示例,演示如何使用HttpURLConnection发送 application/x-www-form-urlencoded 格式的数据:
```
public static String sendPost(String url, Map<String, String> params) throws Exception {
StringBuilder postData = new StringBuilder();
for (Map.Entry<String, String> param : params.entrySet()) {
if (postData.length() != 0) postData.append('&');
postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));
postData.append('=');
postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
}
byte[] postDataBytes = postData.toString().getBytes("UTF-8");
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
conn.setDoOutput(true);
conn.getOutputStream().write(postDataBytes);
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String response = "";
String inputLine;
while ((inputLine = in.readLine()) != null) {
response += inputLine;
}
in.close();
return response;
}
```
其中,params为请求参数,类型为Map<String, String>,url为请求地址。在该示例中,使用了URLEncoder对参数进行编码。
阅读全文