post参数:{}--json字符串
package com.hjkj.facecomparison.utils;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpConnectionUtil {
public static String doGet(String httpUrl) throws Exception {
//链接
HttpURLConnection connection = null;
InputStream is = null;
BufferedReader br = null;
StringBuffer result = new StringBuffer();
try {
//创建连接
URL url = new URL(httpUrl);
connection = (HttpURLConnection) url.openConnection();
//设置请求方式
connection.setRequestMethod("GET");
//设置连接超时时间
connection.setReadTimeout(15000);
//开始连接
connection.connect();
//获取响应数据
if (connection.getResponseCode() == 200) {
//获取返回的数据
is = connection.getInputStream();
if (null != is) {
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String temp = null;
while (null != (temp = br.readLine())) {
result.append(temp);
}
}
}
} catch (IOException e) {
throw new Exception("发起get请求失败", e);
} finally {
closeStream(br, is, null, connection);
}
return result.toString();
}
/**
* Http post请求
* @param httpUrl 连接
* @param param 参数
* @return
*/
public static String doPost(String httpUrl, String param) throws Exception {
StringBuffer result = new StringBuffer();
//连接
HttpURLConnection connection = null;
OutputStream os = null;
InputStream is = null;
BufferedReader br = null;
try {
//创建连接对象
URL url = new URL(httpUrl);
//创建连接
connection = (HttpURLConnection) url.openConnection();
//设置请求方法
connection.setRequestMethod("POST");
//设置连接超时时间
connection.setConnectTimeout(15000);
//设置读取超时时间
connection.setReadTimeout(15000);
//DoOutput设置是否向httpUrlConnection输出,DoInput设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个
//设置是否可读取
connection.setDoOutput(true);
connection.setDoInput(true);
//设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
//拼装参数
if (null != param && !param.equals("")) {
//设置参数
os = connection.getOutputStream();
//拼装参数
os.write(param.getBytes("UTF-8"));
}
//读取响应
//if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
if (null != is) {
br = new BufferedReader(new InputStreamReader(is, "utf8"));
String temp = null;
while (null != (temp = br.readLine())) {
result.append(temp);
result.append("\r\n");
}
}
// }
} catch (IOException e) {
throw new Exception("发起post请求失败", e);
} finally {
closeStream(br, is, os, connection);
}
return result.toString();
}
/**
* 关闭流和http连接
*/
public static void closeStream(BufferedReader br, InputStream is, OutputStream os, HttpURLConnection connection) throws Exception {
//关闭连接
if(br!=null){
try {
br.close();
} catch (IOException e) {
throw new Exception("关闭BufferedReader流失败", e);
}
}
if(os!=null){
try {
os.close();
} catch (IOException e) {
throw new Exception("关闭OutputStream流失败", e);
}
}
if(is!=null){
try {
is.close();
} catch (IOException e) {
throw new Exception("关闭InputStream流失败", e);
}
}
//关闭连接
connection.disconnect();
}
}
```
- 例子
package com.hjkj.facecomparison.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.hjkj.facecomparison.common.ResponseResult;
import com.hjkj.facecomparison.person.Person;
import com.hjkj.facecomparison.utils.HttpConnectionUtil;
import com.pinecone.utils.EncryptionUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
/**
-
人脸比对处理类
*/
@RestController
public class FaceComparisonController {@Value("
{face.requestUrl}")
private String requestUrl;
@Value("${face.clientCode}")
private String clientCode;/**
- 获取比对结果
- @param person {"nameText":"",numberText:"",idPhoto:""}
- @return json
*/
@PostMapping(value = "/comparisonResult")
@ResponseBody
public ResponseResult faceComparisonResult(@RequestBody @Valid Person person) throws Exception {
JSONObject source = new JSONObject();
source.put("clientCode", clientCode);
source.put("encryptString", EncryptionUtils.encryptSM4(sm4Key, JSON.toJSONString(person)));
// return HttpConnectionUtil.doPost(requestUrl, source.toString());
JSONObject jsonObject = JSON.parseObject(HttpConnectionUtil.doPost(requestUrl, source.toString()));
String result = jsonObject.getString("result");
if (result != null && result.equals("-1")) {
return ResponseResult.error(result, jsonObject.getString("errCode"),
jsonObject.getString("resultDetail"), "比对失败");
}
return ResponseResult.success(jsonObject.getString("result"), jsonObject.getString("similarity"), jsonObject.getString("resultDetail"));
}
}
网友评论