新項目中要求把整個請求參數(shù)的json用AES加密生成一個字符串傳給服務(wù)器,本人網(wǎng)絡(luò)庫用的是AFNetworking接谨,加密后試了一下提示“The ... argument is not valid JSON”, 因為請求參數(shù)不是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;
}