在使用AFNetworking进行网络交互时,需要注意请求时候的特殊字符处理。
Get请求参数
由于Get请求的参数是直接在URL中,所以,有些字符可能由于编码问题,会识别不出,需要进行替换:
字符 | 替换 |
---|---|
@ | %40 |
+ | %2B |
/ | %2F |
… | … |
Post请求参数
使用AFNetworking进行Post请求时,如果参数是JSON结构体,AFNetworking底部是使用系统函数进行装换成二进制的:
1 | NSData *data = [NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]; |
但是,对于‘/‘字符,NSJSONSerialization会自动转换成‘\/‘两个字符,例如预期是”b/“,却转成了”b\/“:
1 | {"a":"b/"} |
可能会导致服务端识别错误,所以,需要排除掉‘\‘字符:
1 | NSData *data = [NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]; |