在一個項目中,碰到一個有意思的問題,在調用某個第三方接口後回調本地代碼,對加密過的請求參數進行解密并轉碼,其中一種解碼方式無效,另一種解碼方式有效,何解?:
1、調用第三方接口時加密一個字元串:
String str = “akdfjlksjfdljsdlfslfld”;
(new BASE64Encoder()).encodeBuffer(str.getBytes());
2、同步回調本地代碼時解密并轉碼該字元串,使用下面的轉碼方案沒有問題;而異步回調本地代碼時解密并轉碼該字元串,使用下面的轉碼方案有問題:
String merPriv = request("MerPriv");
String newmerPriv = new String((new BASE64Decoder()).decodeBuffer(merPriv));
newmerPriv = URLDecoder.decode(newmerPriv,"UTF-8").trim();
3、異步回調本地代碼時解密并轉碼該字元串,使用下面的轉碼方案沒有問題:
String merPriv = request("MerPriv");
String newmerPriv = new String((new BASE64Decoder()).decodeBuffer(merPriv));
newmerPriv = new String(newmerPriv.getBytes("ISO-8859-1"),"UTF-8");
如需轉載,請注明出處http://blog.csdn.net/combating/article/details/39525235,謝謝!