在Cocoa中获取缩短URL的长URL的最简单方法是什么?

时间:2010-12-19 00:05:16

标签: objective-c cocoa short-url

在Cocoa中检索短网址的原始网址的最简单方法是什么?什么可以在几行内完成?

3 个答案:

答案 0 :(得分:4)

更新:我刚刚看到你的评论并意识到它正在重定向之后。

请参阅委托方法:connection:willSendRequest:redirectResponse:,它会根据之前的响应告诉您它正在重定向到此新请求。

您可以从此处的新请求或重定向响应的位置标头获取扩展的网址。

  

讨论如果代表希望   取消重定向,应该调用   连接对象的取消方法。   或者,委托方法可以   返回nil取消重定向,并且   连接将继续   处理。这具有特殊意义   redirectResponse不是的情况   零。在这种情况下,任何数据   为连接加载将被发送   代表,代表将   收到connectionDidFinishLoading   或连接:didFailLoadingWithError:   消息,视情况而定。

原始答案如下......

NSURLConnection与代表一起使用。在代理人的connection:didReceiveResponse:方法中,抓取allHeaderFields并阅读“位置”标题的值。

类似的东西:

-(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,一个用于长。

答案 1 :(得分:0)

没有简单的方法,您必须请求短网址提供服务器并获取完整的网址。这必须使用url连接完成,并且可能需要一些逻辑来获取重定向链接(我还没有尝试过)

答案 2 :(得分:-1)

如果您不想发出请求并遵循重定向,则更简单的方法是使用链接延长服务。这是两个简单的API:

我可能会很快发布一些代码段,特别是如果有兴趣的话。