AFNetworking 3.0 解决AES加密后请求参数是字符串问题

新项目中要求把整个请求参数的json用AES加密生成一个字符串传给服务器,本人网络库用的是AFNetworking,加密后试了一下提示“The ... argument is not valid JSON”, 因为请求参数不是json AFNetworking给自动过滤掉了.查看了AFNetworking的源码,只需要找到

- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                               withParameters:(id)parameters
                                        error:(NSError *__autoreleasing *)error

方法,做如下修改就可以了,注释掉的是源码部分,希望能帮助到更多的小伙伴!

#pragma mark - AFURLRequestSerialization

- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                               withParameters:(id)parameters
                                        error:(NSError *__autoreleasing *)error
{
    NSParameterAssert(request);

    if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {
        return [super requestBySerializingRequest:request withParameters:parameters error:error];
    }

    NSMutableURLRequest *mutableRequest = [request mutableCopy];

    [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) {
        if (![request valueForHTTPHeaderField:field]) {
            [mutableRequest setValue:value forHTTPHeaderField:field];
        }
    }];

    if (parameters) {
        if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {
            [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        }

//        if (![NSJSONSerialization isValidJSONObject:parameters]) {
//            if (error) {
//                NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedStringFromTable(@"The `parameters` argument is not valid JSON.", @"AFNetworking", nil)};
//                *error = [[NSError alloc] initWithDomain:AFURLRequestSerializationErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo];
//            }
//            return nil;
//        }
        if ([parameters isKindOfClass:[NSString class]]) {
            [mutableRequest setHTTPBody:[parameters dataUsingEncoding:NSUTF8StringEncoding]];
        }else{
            [mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];
        }

//        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error];
//
//        if (!jsonData) {
//            return nil;
//        }
//
//        [mutableRequest setHTTPBody:jsonData];
    }

    return mutableRequest;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,255评论 4 61
  • 为了丰富大学生的课余生活,提高大学生的身体素质,3月17日下午四点五十分,经济管理学院与美术学院在足球场展开竞技,...
    火山火兰阅读 66评论 0 0
  • 莫名涌来的苦涩 是那一盏茶的午夜 我本不会品茶 依然泡了一杯 茶香里淡淡的 淡淡的一味思念 缠绕着黄昏下的灶台 半...
    刘海波a阅读 323评论 2 3
  • 今年年初开始,戒色已经成了我生活不可或缺的一部分,每日读25分钟的《戒为良药》终于把这本书读完了一遍,正在读第二遍...
    lanzhiheng阅读 3,859评论 7 19