前言
最近在做一个web app是个商城里面需要集成微信支付,在开发的过程中遇到许多坑。
本次主要介绍签名错误,其实造成签名的错误有很多。
正文
我这里只介绍 由于网络请求参数StringEntity编码错误造成的签名错误。StringEntity 使用ISO8859-1编码就可以了。
代码如下
public static String httpPost(String url, String entity) {
String result = "";
//HttpClient client = HttpClients.createDefault();
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
try {
//httpPost.setEntity(new StringEntity(entity));
httpPost.setEntity(new StringEntity(new String(entity.getBytes(), "ISO8859-1")));
HttpResponse httpResponse = client.execute(httpPost);
//否则会乱码
result = EntityUtils.toString(httpResponse.getEntity(), "utf-8");
}
catch (IOException e) {
e.printStackTrace();
}
return result;
}