Самый простой способ получить длинный URL для сокращенного URL в Какао? - PullRequest
2 голосов
/ 19 декабря 2010

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

Ответы [ 3 ]

4 голосов
/ 19 декабря 2010

ОБНОВЛЕНИЕ: Я только что увидел ваш комментарий и понял, что он следует за перенаправлением.

См. Метод делегата: 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, другой для длинного.

0 голосов
/ 18 июля 2012

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

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

0 голосов
/ 19 декабря 2010

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

...