对接口发现后台传参不是json格式,一脸懵逼(我用的YTKNetWork),认知中上传参数都是json格式,要么就是get请求将参数值拼接在url后面(/url/value的方式)
下图为PostMan请求设置,RAW中选择Text格式 ,这时还是对接口产生了质疑,无奈PC端接口已对接功能已实现,只好先看是否是自己的问题
Headers设置.png Body设置.png
平时网络请求设置
- (id)requestArgument{
return _paraDict;
}
- (YTKRequestSerializerType)requestSerializerType
{
return YTKRequestSerializerTypeJSON;
}
想到还有下面这种方式
YTKRequestSerializerTypeHTTP
requestArgument返回的又是id类型 便将平时网络设置改为
- (id)requestArgument{
NSString *idStr = [_paraDict safeObjectForKey:@"id"];
return idStr;
}
- (YTKRequestSerializerType)requestSerializerType
{
return YTKRequestSerializerTypeHTTP;
}
- (NSDictionary<NSString *,NSString *> *)requestHeaderFieldValueDictionary{
return @{@"Content-Type":@"application/json"};
}
调用接口测试,参数多了个“=”,黑人问号
参数.png
XCode中的Log也没有“=”
图片.png
无奈求助baidu
搜到一篇类似的文章 链接>https://www.cnblogs.com/pp-pping/p/8759006.html
按照文章的说明进行代码修改,结果还是有“=”
于是向这行代码发动攻击
将119行代码修改为
NSString * AFQueryStringFromParameters(NSDictionary *parameters) {
if (![parameters isKindOfClass:[NSDictionary class]]) {
return (NSString *)parameters;
}
NSMutableArray *mutablePairs = [NSMutableArray array];
for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) {
[mutablePairs addObject:[pair URLEncodedStringValue]];
}
return [mutablePairs componentsJoinedByString:@"&"];
}
测试成功 但是不知道这种修改是否会有其他问题,以此文章进行记录。
网友评论