setValue:@“application / json”forHTTPHeaderField:@“Content-Type”不工作

时间:2014-06-22 22:05:29

标签: ios nsurlconnection nsmutableurlrequest

简单:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:linkURLString]];
[request setHTTPMethod:@"POST"];
[request setTimeoutInterval:10];
[request setValue:@"application/json" forHTTPHeaderField:@"Content­-Type"];
[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:jsonDictionary options:NSJSONWritingPrettyPrinted error:nil]];

如果我记录标题@"Content­-Type"的值,我就没有了。那就是我在后端得到的东西。每隔一个值设置,甚至尝试其他标题字段,工作正常!我尝试在标题之前设置身体但仍然没有。

1 个答案:

答案 0 :(得分:3)

所以,我尝试复制并粘贴您的代码,我也获得了(null)。 这真的很奇怪,所以我深入了解。

通过打印所有HTTPHeaderFields[request allHTTPHeaderFields])的列表,我获得了这个:

Content-Type: {
    "Content\U00ad-Type" = "application/json";
}

如您所见,有一个奇怪的unicode角色:\U00ad。 这就是原因,因为当您尝试获取与Content-Type相关联的值时,它会找到null

所以我试着用你的代码重写代码中的字符串@"Content-Type",结果是:

Content-Type: {
    "Content-Type" = "application/json";
}

现在确实记录了:

NSLog(@"Content-Type: %@", [request valueForHTTPHeaderField:@"Content-Type"]);

我获得了:

Content-Type: application/json