原因:身份验证传入的参数包含中文企业名,因为本地编码格式是支持中文的;而客户的服务器中文却乱码,导致传给中国移动MAS服务器的是乱码的信息。
解决:非常简单,将中文信息转为UTF-8。例如(%E5%8D%9A%E5%AE%A2%E5%9B%AD)
// 身份验证方法 public static CheckRes check () throws UnsupportedEncodingException {
// 转为 UTF-8格式:案例 String req = "ec_name="+ URLEncoder.encode(ec_name, "UTF-8") +"&user_name="+user_name+"&user_passwd="+user_passwd ; System.out.println("传入参数:"+req); HttpRequest httpRequest = new HttpRequest() ; String checkStr = httpRequest.sendPost(checkUrl,req) ; //返回验证信息的 回参 System.out.println("验证身份结果:"+checkStr); CheckRes checkRes = JSONUtils.json2pojo(checkStr,CheckRes.class); String mas_user_id = checkRes.getMas_user_id() ; System.out.println("mas_user_id:"+mas_user_id); return checkRes ; }
这样就不会出现授权失败情况了!