在Cocoa中检索短网址的原始网址的最简单方法是什么?什么可以在几行内完成?
答案 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:
我可能会很快发布一些代码段,特别是如果有兴趣的话。