ОБНОВЛЕНИЕ: Я только что увидел ваш комментарий и понял, что он следует за перенаправлением.
См. Метод делегата: connection:willSendRequest:redirectResponse:
, который сообщает вам, что выполняет перенаправление на этот новый запрос на основе предыдущего ответа.
Вы можете получить расширенный URL-адрес либо из нового запроса здесь, либо из заголовка Location ответа о перенаправлении.
Обсуждение Если делегат желает
отмените перенаправление, он должен вызвать
метод отмены объекта соединения.
В качестве альтернативы, метод делегата может
вернуть ноль, чтобы отменить перенаправление, и
соединение будет продолжать
процесс. Это имеет особое значение в
случай, когда redirectResponse не является
ноль. В этом случае любые данные, которые
загруженный для соединения будет отправлен
делегату, и делегат
получить соединениеDidFinishLoading
или соединение: didFailLoadingWithError:
сообщение, в зависимости от ситуации.
Оригинальный ответ следует ...
Используйте NSURLConnection
с делегатом. В методе connection:didReceiveResponse:
вашего делегата выберите allHeaderFields
и прочитайте значение заголовка "Location".
Что-то вроде:
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"Expanded URL = %@", [[(NSHTTPURLResponse *)response allHeaderFields] objectForKey:@"Location"]);
}
Я бы создал небольшой класс URLExpander
, чтобы сделать это лично, с подписью что-то вроде:
+(void)asyncExpandURL:(NSURL *)aURL didExpandTarget:(id)target selector:(SEL)selector;
Затем просто передайте два аргумента в вашем сообщении, один для короткого URL, другой для длинного.