httpurlconnection post传参 代码详细解释
时间: 2023-09-15 13:20:37 浏览: 115
安卓http post json
4星 · 用户满意度95%
HttpURLConnection是Java中处理HTTP请求的类,可以通过它来发送GET、POST等请求。下面是使用POST请求方式传参的代码示例:
```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.*;
public class HttpPostExample {
public static void main(String[] args) throws Exception {
URL url = new URL("http://example.com/api"); // 请求的url
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST"); // 设置请求方式为POST
conn.setDoOutput(true); // 允许写出数据
conn.setDoInput(true); // 允许读入数据
conn.setUseCaches(false); // 不使用缓存
conn.setConnectTimeout(5000); // 设置连接超时时间为5秒
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); // 设置请求头信息
// 请求参数
String requestBody = "{\"username\":\"admin\",\"password\":\"123456\"}";
// 写出请求参数
OutputStream out = conn.getOutputStream();
out.write(requestBody.getBytes());
out.flush();
out.close();
// 读入响应结果
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
// 输出响应结果
System.out.println(response.toString());
// 关闭资源
reader.close();
in.close();
conn.disconnect();
}
}
```
代码分析:
1. 创建URL对象,将请求的url传入其中。
2. 打开URL连接,获取HttpURLConnection对象。
3. 设置请求方式为POST:`conn.setRequestMethod("POST")`。
4. 允许写出数据和读入数据:`conn.setDoOutput(true)`和`conn.setDoInput(true)`。
5. 不使用缓存:`conn.setUseCaches(false)`。
6. 设置连接超时时间为5秒:`conn.setConnectTimeout(5000)`。
7. 设置请求头信息:`conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8")`。
8. 将请求参数写出:`OutputStream out = conn.getOutputStream(); out.write(requestBody.getBytes()); out.flush(); out.close()`。
9. 读入响应结果:`InputStream in = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); }`。
10. 输出响应结果:`System.out.println(response.toString())`。
11. 关闭资源:`reader.close(); in.close(); conn.disconnect()`。
注意:在实际开发中,请求参数可能不是简单的字符串,而是一个复杂的对象,需要将其转换为JSON格式。此时,可以使用第三方库如Jackson或Gson来进行转换。另外,请求头信息也需要根据实际情况进行设置。
阅读全文