Самый простой способ получить длинный URL для укороченного URL в Cocoa?



Каков самый простой способ получить исходный URL-адрес для короткого URL-адреса в Cocoa? Что-нибудь, что можно сделать всего за несколько строк?

114   3  

3 ответов:

UPDATE: я только что увидел ваш комментарий и понял, что он следует за перенаправлением.

Смотрите метод делегата: connection:willSendRequest:redirectResponse:, который сообщает вам, что он выполняет перенаправление на этот новый запрос, основанный на предыдущем ответе.

Расширенный URL-адрес можно получить либо из нового запроса здесь,либо из заголовка Location ответа на перенаправление.

Обсуждение Если делегат желает отмените перенаправление, оно должно вызвать метод отмены объекта соединения. Кроме того, метод делегата может верните ноль, чтобы отменить перенаправление, и связь будет продолжаться и дальше. процесс. Это имеет особое значение в случай, когда redirectResponse не является нуль. В этом случае любые данные, которые есть загруженные для соединения будут отправлены делегату, и делегат будет получить connectionDidFinishLoading или соединение: 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, один для длинного.

Нет простого способа, вы должны запросить короткий url-сервер и получить полный url. Это должно быть сделано с помощью url-соединения и, возможно, какой-то логики, чтобы получить ссылку перенаправления (я еще не пробовал)

Если вы не хотите делать запрос и следовать перенаправлениям, более простой способ-использовать службу удлинения ссылок. Вот два простых API:

Я могу опубликовать некоторые фрагменты кода в ближайшее время, особенно если есть интерес.

    Ничего не найдено.

Добавить ответ:
Отменить.