美文网首页
iOS 使用YTKNetWork HTTP方式上传参数多了“=”

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

作者: 趁惑哒洁 | 来源:发表于2020-03-17 11:54 被阅读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:@"&"];
    }
    

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

    相关文章

      网友评论

          本文标题:iOS 使用YTKNetWork HTTP方式上传参数多了“=”

          本文链接:https://www.haomeiwen.com/subject/rwnzehtx.html