平常用NSURLConnection也就好好的
剛好遇到了spec上的需求,需要改寫HTTP header
稍微查一下,其實不難 (list.apple.com)
1. 如果想一次改比較多項
[request setAllHTTPHeaderFields: [NSDictionary dictionaryWithObjectsAndKeys: @"iPhone", @"User-Agent", @"close", @"Connection", @"gzip", @"Accept-Encoding", @"*/*", @"Accept", nil]];2. 如果改個其中一個
[request setValue:@"aValue" forHTTPHeaderField:@"field"];只是有兩點要比較注意的:
1. HTTP header欄位是case-insensitive, 但是要記得使用NSMutableURLRequest才能修改
2. 有關 Connection這個header是無法改寫的! 沒錯,只有keep-alive,就算改了close一樣無效
第二點除了一開始的參考連結有提到這個問題外,在cocoabuilder.com也有人提出相同問題根據討論的結果,可能Apple當初就希望手持裝置的連線是採取盡其所能的連著,除非server端主動斷線...另外一方面來講,當然是這個API的一個bug...
看文章從2005年到現在都幾年了!如果非要close的header請自行下海CFNetwork客製化吧~