在使用Hutool的HttpRequest类中的post请求时,请求参数有中文会出现乱码问题。以下是本人的解决方法,仅供参考。
发送请求前对参数进行编码
public String getUserNameByPost( User user){
String json = JSONUtil.toJsonStr(user);
HttpResponse httpResponse = HttpRequest.post(GATEWAY_HOST+"/api/user/username")
.addHeaders(HeaderUtils.getHeaderMap(json,accessKey,secretKey))//添加请求头
.body(json)
.execute();
String result = httpResponse.body();//响应体
return result;
}
public static Map<String,String> getHeaderMap(String body, String accessKey, String secretKey){
Map<String, String> hashMap = new HashMap<>();
//解决参数中文乱码
String encode ="";
try {
encode = URLEncoder.encode(body, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
hashMap.put("body",encode);
return hashMap;
}
获取到请求后对参数进行解码
String body = null;
//解码,解决中文乱码问题
body = headers.getFirst("body");
try {
body = URLDecoder.decode(body,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}