设置内容类型覆盖httpbody?

时间:2013-03-06 17:29:31

标签: ios objective-c nsmutableurlrequest

我在ios应用程序中调用API时遇到了一个奇怪的问题。我创建了一个帖子请求

NSMutableURLRequest *request = [NSMutableURLRequest
                                requestWithURL:url
                                   cachePolicy:NSURLRequestUseProtocolCachePolicy
                               timeoutInterval:5.0];
[request setHTTPMethod:@"POST"];

然后创建json以发送到请求并将其添加到请求的主体中,如下所示:

[request setHTTPBody:encodedData];

最后,我添加了一些我随后设置的cookie:

NSArray* cookieArray = [NSArray arrayWithObjects: sessionCookie, uidCookie, vidCookie, nil];
NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookieArray];
[request setAllHTTPHeaderFields:headers];

一切正常。但是,因为我发送json,我试图做得很好,并且还使用这行代码设置内容类型:

[request setValue:@"application/json; charset=utf-8" forHTTPHeaderField: @"Content-Type"];

只要我添加这行代码,我发送给请求正文的数据就不再作为请求的一部分传递。这听起来像是其他人经历过的行为吗?

1 个答案:

答案 0 :(得分:3)

我也在使用

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];

检查此说明 What does "Content-type: application/json; charset=utf-8" really mean?