首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSessionConfiguration不接受HTTPAdditionalHeaders中的“内容类型”

NSURLSessionConfiguration不接受HTTPAdditionalHeaders中的“内容类型”
EN

Stack Overflow用户
提问于 2015-04-15 10:50:03
回答 2查看 2.1K关注 0票数 4

我正在使用NSURLSession.I进行REST服务调用,我已经为NSURLSessionConfiguration.HTTPAdditionalHeaders.中的webservice设置了内容类型下面的代码在iOS 7.0到iOS 8.1.3中运行得非常好。但是在iOS 8.3中,当在HTTPAdditionalHeaders中设置内容类型时,web服务响应数据以零字节的形式返回。

方法1:

代码语言:javascript
复制
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] init];
NSData *postData = [dataToBeSent dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[urlRequest setHTTPBody:postData];
[urlRequest setHTTPShouldHandleCookies:YES];
[urlRequest setURL:urlOfService];
[urlRequest setHTTPMethod:@"POST"];

NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfiguration.HTTPAdditionalHeaders = @{@"Content-Type"       : @"application/json"};
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
}];

如果我按照下面的方式修改上述代码以设置NSMutableURLRequest中的内容类型,我将从iOS8.3中的webservice接收数据。我不知道是什么导致了这个问题。而且,我没有看到任何人报告这一问题。我只想知道我的第一种调用web服务的方式是一种推荐的方式,还是我在这里做错了什么?如果第一种调用web服务的方法是错误的,那么它为什么要在除8.3之外的所有其他iOS版本上工作呢?

方法2:

代码语言:javascript
复制
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] init];
NSData *postData = [dataToBeSent dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[urlRequest setHTTPBody:postData];
[urlRequest setHTTPShouldHandleCookies:YES];
[urlRequest setURL:urlOfService];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];

NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
}];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-28 12:59:27

由于错误(特性?),您必须使用第二种方法。在iOS 8.3SDK中http://openradar.appspot.com/20498383

票数 4
EN

Stack Overflow用户

发布于 2015-04-15 11:17:20

我看不出你的代码有什么错误。但也许值得尝试使用AFNetworking

该库非常完整,在内容类型、异步连接等方面具有很大的灵活性。我认为我们无法预测新的iOS版本的行为,因为它们很快就会减少很多内容。AFNetworking一直在被更新。

这里是框架,它们有示例和您可能需要的一切。

您可能必须使用请求序列化。我把你链接到的页面上有几个例子。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29648260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档