之前调过一个接口,报错如下:
前提说明:其他接口请求是没有问题的,但是只有一个接口出现了这种问题。
经过排查,原因如下:
iOS端参数加密代码如下:
NSString * body = nil;
if (newParam) {
//body内容
body = [WMJSONUtil stringWithJSONObject:newParam];
//按要求去除\s\t\r\n
body = [body stringByReplacingOccurrencesOfString:@"\t" withString:@""];
body = [body stringByReplacingOccurrencesOfString:@"\r" withString:@""];
body = [body stringByReplacingOccurrencesOfString:@"\n" withString:@""];
body = [body stringByReplacingOccurrencesOfString:@" " withString:@""];
}
而Android和服务端的却是这样的:
NSRegularExpression *regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"\\s*|\t|\r|\n"
options:0
error:nil];
结论:很明显能够看出Android和服务是通过正则去除网络标签,而iOS是通过替换达到这种效果,显然替换的方式没有正则的强大。所以修改方法就是iOS也使用正则过滤,保证三端的加密方式是一致的就可以了。
希望能够帮助大家!