AFnetWorking的一个bug

来源:互联网 发布:windows键没反应 win10 编辑:程序博客网 时间:2024/06/03 19:18

项目发送json表单到服务器,接收不了,而用Postman可以。。

原因是:

AFnetWorking默认发送的参数数据结构是表单结构(form-data)格式,而我服务器要支持的content-type为application/json,所以修改了其中一个方法(目前没发现其他解决方案)

 "AFURLRequestSerialization.m"文件中466行

- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request                               withParameters:(id)parameters                                        error:(NSError *__autoreleasing *)error{    NSParameterAssert(request);    NSMutableURLRequest *mutableRequest = [request mutableCopy];    [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) {        if (![request valueForHTTPHeaderField:field]) {            [mutableRequest setValue:value forHTTPHeaderField:field];        }    }];    NSString *query = nil;    if (parameters) {        if (self.queryStringSerialization) {            NSError *serializationError;            query = self.queryStringSerialization(request, parameters, &serializationError);            if (serializationError) {                if (error) {                    *error = serializationError;                }                return nil;            }        } else {            switch (self.queryStringSerializationStyle) {                case AFHTTPRequestQueryStringDefaultStyle:                    query = AFQueryStringFromParameters(parameters);                    break;            }        }    }    if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {        if (query && query.length > 0) {            mutableRequest.URL = [NSURL URLWithString:[[mutableRequest.URL absoluteString] stringByAppendingFormat:mutableRequest.URL.query ? @"&%@" : @"?%@", query]];        }    } else {        // #2864: an empty string is a valid x-www-form-urlencoded payload        if (!query) {            query = @"";        }        if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {            [mutableRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];            [mutableRequest setHTTPBody:[query dataUsingEncoding:self.stringEncoding]];        }else{#warning            /**             *  yyc修改:             */            NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];            [mutableRequest setHTTPBody:postData];        }             }    return mutableRequest;}




0 0
原创粉丝点击