安卓如何使用HttpURLConnection进行post请求
时间: 2024-02-21 13:31:30 浏览: 143
安卓http post json
4星 · 用户满意度95%
使用HttpURLConnection进行post请求的步骤如下:
1. 创建一个URL对象,指定请求的URL地址。
2. 调用URL对象的openConnection方法获取HttpURLConnection对象。
3. 设置请求的方法为POST,设置请求头信息,设置超时时间等。
4. 构建请求参数,将请求参数写入输出流中。
5. 调用HttpURLConnection对象的getInputStream方法获取服务器返回的输入流。
6. 读取输入流中的数据,将数据转换成字符串格式。
7. 关闭输入流和输出流,断开与服务器的连接。
下面是使用HttpURLConnection进行post请求的示例代码:
```
public static String doPost(String urlStr, Map<String, String> params) throws Exception {
// 1. 创建一个URL对象
URL url = new URL(urlStr);
// 2. 获取HttpURLConnection对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 3. 设置请求的方法为POST
conn.setRequestMethod("POST");
// 4. 设置请求头信息
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Charset", "UTF-8");
// 5. 设置超时时间
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
// 6. 构建请求参数
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "UTF-8")).append("&");
}
sb.deleteCharAt(sb.length() - 1);
String postData = sb.toString();
// 7. 将请求参数写入输出流中
conn.setDoOutput(true);
OutputStream outputStream = conn.getOutputStream();
outputStream.write(postData.getBytes());
outputStream.flush();
outputStream.close();
// 8. 获取服务器返回的输入流
InputStream inputStream = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
// 9. 读取输入流中的数据,将数据转换成字符串格式
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
inputStream.close();
// 10. 关闭输入流和输出流,断开与服务器的连接
conn.disconnect();
// 11. 返回服务器返回的数据
return response.toString();
}
```
在调用该方法时,需要传入请求的URL地址和请求参数,请求参数以Map的形式传入。
阅读全文