iOS 使用YTKNetWork HTTP方式上传参数多了“=”

2020-03-17  本文已影响0人  趁惑哒洁

对接口发现后台传参不是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
按照文章的说明进行代码修改,结果还是有“=”
于是向这行代码发动攻击

图片.png
将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:@"&"];
}

测试成功 但是不知道这种修改是否会有其他问题,以此文章进行记录。

上一篇 下一篇

猜你喜欢

热点阅读