Получение заголовка «Location» из NSHTTPURLResponse - PullRequest
4 голосов
/ 25 марта 2010

Невозможно получить заголовок "Location" из ответа. 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;
}

Нет места нигде. Как получить его? Мне нужна эта штука "Сид".

Ответы [ 2 ]

5 голосов
/ 25 марта 2010

NSHTTPURLResponse является подклассом NSURLResponse, поэтому вы можете просто запросить у него URL. Это возвращает объект NSURL, из которого вы можете получить компоненты URL, такие как запрос, строка параметра или фрагмент. В вашем случае вы хотите компонент фрагмента:

NSURL* url = [response URL];
NSString* fragment = [url fragment];
//fragment should be: 0;sid=865a84f0212a3a35d8e9d5f68398e535
2 голосов
/ 19 октября 2015

Думаю, что было бы полезно дополнить ответ @Rob Keniger примером того, как получить доступ к заголовку Location в Swift. Как показано выше, «Location» - это поле заголовка ответа HTTP, поэтому в Swift это можно сделать следующим образом:

if let location = response.allHeaderFields["Location"] as? String
{
    NSLog("Location \(location)")
}

, где response имеет тип NSHTTPURLResponse. См. NSHTTPURLResponse Class Reference .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...