共计 1743 个字符,预计需要花费 5 分钟才能阅读完成。
对接第三方接口时,有时接口要求参数为 json 格式,留个笔记备用!
引入的包如下
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import java.security.MessageDigest;
import org.apache.http.entity.StringEntity
核心代码如下,其中有个对参数进行 hash+salt 加密方法名为 getSignature()
getSignature()具体代码如下图一
发送请求并获取响应的代码如下图二
private String getSignature(String param) {
String ori=param+ 指定的 salt 或者随机生成 salt;
MessageDigest md = null;
try {md = MessageDigest.getInstance("SHA-256");
md.update(ori.getBytes("UTF-8"));
return byte2Hex(md.digest());
} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);
} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);
}
}
private String byte2Hex(byte[] bytes){StringBuffer stringBuffer = new StringBuffer();
String temp = null;
for (int i=0;i
HttpClient client = new DefaultHttpClient();
HttpResponse resp;
HttpPost post = new HttpPost(url);
post.addHeader("Accept", "application/json");
String authorization = "Bearer" + getAccessToken().get("data").toString();
post.addHeader("Authorization", authorization);
post.addHeader("Content-Type", "application/json");
JSONObject param = new JSONObject();
param.put("paraName1",paramaValue1);
param.put("paraName2",paramaValue2);
String sign=getSignature(param.toString());
post.addHeader("sign", sign);
StringEntity reqEntity = new StringEntity(param.toString(),"utf-8");
reqEntity.setContentEncoding("UTF-8");
reqEntity.setContentType("application/json");
// 设置类型
// 设置请求的数据
post.setEntity(reqEntity);
try{resp = client.execute(post);
HttpEntity httpEntity = resp.getEntity();
sResponse = EntityUtils.toString(httpEntity, "UTF-8").trim();
Map respMap =jsonToBean(sResponse, Map.class);
}catech(Exception e){e.printstsck();
}
resp = client.execute(post);
,httppost 设置参数主要靠 xxxeneity, 详情可以百度查看使用!
原文地址: java 使用 httppost 设置 json 参数发送请求
正文完