做项目时经常会遇到要与第三方联调接口的情况,对方提供一个接口文档,接下来就调用获取数据
/**
* 发送POST请求,参数是Map<String,Object> 类型
* @param url 请求API的URL
* @param data POST数据,Map类型
* @return API返回的JSON数据
* @throws Exception
*/
public static String sendPostRequest(String url, Map<String, Object> data,String token) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("API-TOKEN", token);
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);
}
url:接口地址
data:请求参数,是个Map,也可以是json字符串(json字符串就不需要 “String postData = convertMapToJsonString(data);”这行代码)
token: 对方接口的token校验,需要就传输,不需要就不用