【发布时间】:2017-06-20 10:39:14
【问题描述】:
这是标题:
"url": "{{host}}/images/bla",
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"description": ""
},
{
"key": "Authorization",
"value": "Bearer token",
"description": ""
}
],
"body": { ... }
我尝试分两种情况解决:
案例 1(崩溃):
NSDictionary *headerDict = @{@"key": @"Content-Type",
@"value": @"application/json",
@"description": @""};
NSDictionary *headerDict1 = @{@"key": @"Authorization",
@"value": kBearerKey,
@"description": @""};
NSArray *headerArray = @[headerDict, headerDict1];
[weakSelf.requestOperationManager.requestSerializer setValue:headerArray forHTTPHeaderField:@"header"];
案例 2(不会崩溃但也不起作用):
weakSelf.requestOperationManager.requestSerializer = [AFHTTPRequestSerializer serializer];
[weakSelf.requestOperationManager.requestSerializer setValue:@"Content-Type" forHTTPHeaderField:@"key"];
[weakSelf.requestOperationManager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"value"];
[weakSelf.requestOperationManager.requestSerializer setValue:@"Authorization" forHTTPHeaderField:@"key"];
[weakSelf.requestOperationManager.requestSerializer setValue:kBearerKey forHTTPHeaderField:@"value"];
无论如何,在 案例 1 中会生成一个警告(并且也会导致崩溃),因为 setValue 应该是 NSString 而不是 NSArray。
【问题讨论】:
-
你需要将数组转换成json字符串: NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject: headerArray options:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
-
这是有效的,但问题是数据解释器在@"application/json" 中添加了一个“\”,它看起来像 @"application\/json" : (lldb) po headerString [ { " key”:“Content-Type”,“value”:“application\/json”,“description”:“”},{“key”:“授权”,“value”:“Bearer xpkaVSckJSfCWzcXfODtiBu38B6mOMzPW....”, “描述”:“”}]
标签: ios objective-c json http-headers afnetworking