记一次与其他产品接口交互,参数json格式,返回值json。
/**
* 发送post请求
*
* @param url 路径
* @param jsonObject 参数(json类型)
* @param encoding 编码格式
* @return
* @throws ParseException
* @throws IOException
*/
public static String send(String url, JSONObject jsonObject, String encoding) throws ParseException, IOException {
String body = "";
//创建httpclient对象
CloseableHttpClient client = HttpClients.createDefault();
//创建post方式请求对象
HttpPost httpPost = new HttpPost(url);
//装填参数
StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");
s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
//设置参数到请求对象中
httpPost.setEntity(s);
System.out.println("请求地址:" + url);
// System.out.println("请求参数:"+nvps.toString());
//设置header信息
//指定报文头【Content-type】、【User-Agent】
// httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
httpPost.setHeader("Content-type", "application/json");
httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//执行请求操作,并拿到结果(同步阻塞)
CloseableHttpResponse response = client.execute(httpPost);
//获取结果实体
HttpEntity entity = response.getEntity();
if (entity != null) {
//按指定编码转换结果实体为String类型
body = EntityUtils.toString(entity, encoding);
}
EntityUtils.consume(entity);
//释放链接
response.close();
return body;
}
测试
public static void main(String[] args) {
String url = "http://************";
JSONObject jsonParam = new JSONObject();
jsonParam.put("transId","444444444444444");
jsonParam.put("origin", "KMS");
jsonParam.put("appId", "APP_B6DC6909C07342D08BBDEA86865A2880");
jsonParam.put("keySpec", "SM4_128");
jsonParam.put("keyUsage", "ENCRYPT/DECRYPT");
try {
String data = send(url,jsonParam,"UTF-8");
JSONObject jsonObject = JSONObject.parseObject(data);
System.out.println("result="+data);
System.out.println("result="+jsonObject);
System.out.println("keyId="+jsonObject.getJSONObject("data").getJSONObject("cmkMetadata").get("keyId"));
} catch (IOException e) {
e.printStackTrace();
}
}