2015-02-07 124 views
2

我需要发送请求到我的服务器没有http头与NSMutableURLRequest和NSMutableURLConnection。我发现这删除标题[request setValue:@"" forHTTPHeaderField:@"User-Agent"];的内容,但我需要删除所有标题。 现在:删除NSMutableURLRequest中的HTTP标头

GET/HTTP/1.1 
Host: 127.0.0.1:5555 
Accept: */* 
Accept-Language: en-us 
Connection: keep-alive 
Accept-Encoding: gzip, deflate 
User-Agent: 

极品:

Custom text like "Hello" 

代码:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
+0

为什么?我不知道你可以像一些标头内置... – Wain 2015-02-07 10:29:19

+0

@是的,你确定吗?我需要客户端和服务器之间的清晰对话。 – Vladislav 2015-02-07 10:38:06

+0

您的服务器?不是服务器应该关心用户代理... – Wain 2015-02-07 18:57:26

回答

0

我真的不知道为什么你要删除的头,因为可能有一些默认的报头字段。不过,我想你可以使用这个

NSURLConnection *connection; 
NSURL* url=[NSURL URLWithString:@"your url"]; 

NSMutableURLRequest *request = [NSMutableURLRequest 
requestWithURL:[url standardizedURL]]; 

//set http method GET OR POST OR WHATEVER 
[request setHTTPMethod:@"GET"]; 
connection=[NSURLConnection connectionWithRequest:request delegate:self]; 

我认为它会工作和头将被作为空

+0

不,它不工作。 – Vladislav 2015-02-07 13:46:54

+0

可能有些标头默认内置。 – 2015-02-07 15:30:36

0

试试这个:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:self.URL]; 
for (NSString *key in [request.allHTTPHeaderFields allKeys]) { 
    [request setValue:nil forHTTPHeaderField:key]; 
} 
+0

不工作。 – Vladislav 2015-02-08 16:46:13

0

假设你已经实施了NSURLConnectionDataDelegate,你有在发送之前复制和修改请求的机会:

- (NSURLRequest *)connection: (NSURLConnection *)inConnection 
      willSendRequest: (NSURLRequest *)inRequest 
      redirectResponse: (NSURLResponse *)inRedirectResponse; 
{ 
    if (inRequest) { 
    NSMutableURLRequest *modifiedRequest = [inRequest mutableCopy]; 
    [modifiedRequest setValue:nil forHTTPHeaderField:@"User-Agent"]; 
    // or whatever code you need to nil out unwanted header fields 
    return modifiedRequest; 
    } else { 
    return nil; 
    } 
} 

Descripti这个委托方法的使用似乎只在重定向的情况下才调用,但实际上在每个请求发出之前调用它(直到并包括macOS 10.12)。实际上,对于重定向,它会被调用两次 - 一次是原始URL,一次是重定向的目标。

从我的实验,这是不可能去除呼吁NSURLConnectioninitWithRequest之前User-AgentAccept-Encoding,或Accept-Language