如何在iOS上创建没有标题的请求?

时间:2017-10-20 16:05:45

标签: ios objective-c cocoa-touch nsurlsession nsurlrequest

我似乎无法从请求中完全删除标头。 我尝试将NSURLRequest子类化并将标题值设置为nil,但它们仍然显示出来。我能做的最接近的事是:

-(instancetype)init{
self = [super initWithURL:[NSURL URLWithString:@"http://www.example.com/"]];
if(self){
    self.HTTPMethod = @"POST";
    self.HTTPBody = [@"65000,100" dataUsingEncoding:NSUTF8StringEncoding];
    [self setValue:@"" forHTTPHeaderField:@"Host"];
    [self setValue:@"" forHTTPHeaderField:@"User-Agent"];
    [self setValue:@"" forHTTPHeaderField:@"Content-Type"];
    [self setValue:@"" forHTTPHeaderField:@"Connection"];
    [self setValue:@"" forHTTPHeaderField:@"Accept"];
    [self setValue:@"" forHTTPHeaderField:@"Accept-Language"];
    [self setValue:@"" forHTTPHeaderField:@"Accept-Encoding"];
    [self setValue:@"" forHTTPHeaderField:@"Content-Length"];
}
return self;
}

这会创建以下标题:

POST / HTTP/1.1
Host: 
Content-Type: 
Content-Length: 9
Accept: 
User-Agent: 
Accept-Language: 
Accept-Encoding: 
Connection: keep-alive

65000,100

理想情况下,我试图发送请求

65000,100

使用带有NSURLRequest的NSURLSessionTask不是这样做的方法,所以如果是这种情况,请提供建议。

1 个答案:

答案 0 :(得分:0)

我不认为您想要全面执行此操作,因为在许多情况下它违反了HTTP规范。例如,Host头必须包含在HTTP / 1.1 [14.23]中。与Connection相同。内容长度,用户代理应该包括在内。

但是,我认为通过将其设置为nil来清除其中一些字段的旧方法在iOS10 +中不再有效。