从NSHTTPURLResponse获取“位置”标题

时间:2010-03-25 08:21:13

标签: objective-c iphone-sdk-3.0

无法从响应中获取“位置”标头。 Wireshark说我有一个:

  

位置:   HTTP://*/index.html#0; SID = 865a84f0212a3a35d8e9d5f68398e535

但是

NSHTTPURLResponse *hr = (NSHTTPURLResponse*)response;
NSDictionary *dict = [hr allHeaderFields];          
NSLog(@"HEADERS : %@",[dict description]);

产生这个:

HEADERS : {
    Connection = "keep-alive";
    "Content-Encoding" = gzip;
    "Content-Type" = "text/html";
    Date = "Thu, 25 Mar 2010 08:12:08 GMT";
    "Last-Modified" = "Sat, 29 Nov 2008 15:50:54 GMT";
    Server = "nginx/0.7.59";
    "Transfer-Encoding" = Identity;
}

无处可寻。怎么弄?我需要这个“sid”的东西。

2 个答案:

答案 0 :(得分:5)

NSHTTPURLResponseNSURLResponse的子类,因此您可以问它URL。这将返回一个NSURL对象,您可以从中获取URL组件,例如查询,参数字符串或片段。在您的情况下,您需要片段组件:

NSURL* url = [response URL];
NSString* fragment = [url fragment];
//fragment should be: 0;sid=865a84f0212a3a35d8e9d5f68398e535

答案 1 :(得分:2)

认为通过一个如何访问Swift中位置标题的示例来补充@Rob Keniger的答案可能会有所帮助。如上所示,“Location”是一个HTTP响应头字段,因此在Swift中可以按如下方式完成:

npm install

其中if let location = response.allHeaderFields["Location"] as? String { NSLog("Location \(location)") } 的类型为response。请参阅NSHTTPURLResponse Class Reference