HttpURLConnection的POST请求JSON
Contents
1. 概述
在本教程中,我们将演示如何使用HttpURLConnection 发出JSON POST 请求。
2. 使用HttpURLConnection构建 JSON POST 请求
2.1. 创建一个URL对象
让我们创建一个带有目标 URI 字符串的 URL对象,该字符串通过 HTTP POST 方法接受 JSON 数据:
URL url = new URL ("https://reqres.in/api/users");
2.2. 打开连接
从上面的URL对象中,我们可以调用openConnection方法来获取HttpURLConnection对象。
我们不能直接实例化HttpURLConnection,因为它是一个抽象类:
HttpURLConnection con = (HttpURLConnection)url.openConnection();
2.3. 设置请求方法
要发送 POST 请求,我们必须将请求方法属性设置为 POST:
con.setRequestMethod("POST");
2.4. 设置请求内容类型标头参数
将“content-type”请求头设置为“application/json”**,以JSON形式发送请求内容。此参数必须设置为以 JSON 格式发送请求正文。
否则,服务器会返回 HTTP 状态码“400-bad request”:
con.setRequestProperty("Content-Type", "application/json");
2.5. 设置响应格式类型
将“Accept”请求标头设置为“application/json”以读取所需格式的响应:
con.setRequestProperty("Accept", "application/json");
2.6. 确保连接将用于发送内容
要发送请求内容,让我们启用URLConnection对象的doOutput属性为true。
否则,我们将无法将内容写入连接输出流:
con.setDoOutput(true);
2.7. 创建请求正文
创建自定义 JSON 字符串后:
String jsonInputString = "{"name": "Upendra", "job": "Programmer"}";
我们需要这样写:
try(OutputStream os = con.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
2.8. 从输入流中读取响应
获取输入流以读取响应内容。请记住使用 try-with-resources 自动关闭响应流。
通读整个响应内容,并打印最终的响应字符串:
try(BufferedReader br = new BufferedReader(
new InputStreamReader(con.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
System.out.println(response.toString());
}
如果响应是 JSON 格式,请使用任何第三方 JSON 解析器,例如Jackson 库、Gson 或org.json 来解析响应。