无法从响应中获取“位置”标头。 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”的东西。
答案 0 :(得分:5)
NSHTTPURLResponse
是NSURLResponse
的子类,因此您可以问它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。