2015-02-07 76 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