问题:
今天调用第三方接口时,参数,签名啥的都计算好之后需要重定向过去。直接在浏览器输入地址是Ok的,redirect(url)却无法通过签名
原因:
浏览器会对url中的中文进行编码,而redirect并不会。导致重定向的时候没有把url中的中文参数传过去。
解决:
1.需要确认参与签名的参数是否需要编码.(一般不需要)
2.需要的话就需要分别在计算签名和拼接url之前分别对中文参数Encoder
3.不需要的话就直接在拼接url参数时编码 (我遇到的是这种)
实例:
for (String key : orderKeys
) {
if ("Nickname".equals(key)){
//对中文参数编码
orderUrl += "&" + key + "=" + URLEncoder.encode(order.getString(key),"utf-8");
}else {
orderUrl += "&" + key + "=" + order.getString(key);
}
}
最后,重定向的url看起来像这样.
http://**.****.com/pages/cityparking/yitian?sign=88be4baa0212df8458c67210759ff8f1&****&Mobile=155******30&Nickname=**%90%E4%BF%8A%E4%BC%9F
网友评论