/**
* 发送POST请求
* @param url 请求API的URL
* @param data POST数据,Map类型
* @return API返回的JSON数据
* @throws Exception
*/
public static String sendPostRequest(String url, Map<String, Object> data) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
String postData = convertMapToJsonString(data);
wr.writeBytes(postData);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
}
/**
* 把Map类型数据转换成JSON字符串
* @param map Map类型数据
* @return 转换后的JSON字符串
* @throws Exception
*/
private static String convertMapToJsonString(Map<String, Object> map) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(map);
}
这段代码定义了一个方法 `sendPostRequest`,它接收两个参数:API的URL和POST数据,类型为Map<String, Object>。
这个方法会返回一个String类型的JSON数据。如果遇到异常,将向调用代码抛出一个Exception。 这个方法的具体实现步骤:
1. 创建一个URL对象 obj,并打开连接(通过HttpURLConnection对象 con)。
2. 设置请求方法为POST,Content-Type为application/json,启用输出流。
3. 调用 `convertMapToJsonString` 方法将POST数据转换为JSON格式的字符串。
4. 将POST数据写入数据输出流 wr 中,并发送请求。
5. 等待API的响应。
6. 读取API返回的响应数据,并将它们拼接在一起,直到读取完。
7. 关闭输入流。
8. 返回响应数据的JSON字符串形式。 `convertMapToJsonString` 方法将一个 Map 对象转换为 JSON 格式的字符串。作为参数的 map 对象中,String 是键,Object 是值。然后使用 ObjectMapper 将 Map 对象转换为 JSON 格式的字符串,该代码使用的是 Jackson 库。 希望这个解释能够帮助你理解这段代码的实现细节。