我想確定一個簡短的URL的長URL是什麼。我嘗試過使用http HEAD請求,但返回的頭部字段實際上只包含與目標/長url有關的任何數據。如何從一個簡短的URL獲得一個長的URL
是否有: 1.任何方式來確定長URL? 2.如果是這樣,是否可以在不下載目的地主體的情況下完成?
謝謝
我想確定一個簡短的URL的長URL是什麼。我嘗試過使用http HEAD請求,但返回的頭部字段實際上只包含與目標/長url有關的任何數據。如何從一個簡短的URL獲得一個長的URL
是否有: 1.任何方式來確定長URL? 2.如果是這樣,是否可以在不下載目的地主體的情況下完成?
謝謝
執行HEAD
並查找Location
標頭。
% telnet bit.ly 80
Trying 168.143.173.13...
Connected to bit.ly.
Escape character is '^]'.
HEAD /cwz5Jd HTTP/1.1
Host: bit.ly
HTTP/1.1 301 Moved
Server: nginx/0.7.42
Date: Fri, 12 Mar 2010 18:37:46 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Set-Cookie: _bit=4b9a89fa-002bd-030af-baa08fa8;domain=.bit.ly;expires=Wed Sep 8 14:37:46 2010;path=/; HttpOnly
Location: http://www.engadget.com/2010/03/12/motorola-milestone-with-android-2-1-hitting-bulgaria-by-march-20/?utm_source=twitterfeed&utm_medium=twitter
MIME-Version: 1.0
Content-Length: 404
這樣結束了是最正確的答案。完整的答案包括按照這個答案中的建議做一個頭像請求。包含位置標題的響應可以從「連接willSendRequest ....」委託方法中提取,而不是didReceiveResponse委託方法。 – RunLoop 2010-03-13 03:09:04
HEAD並不總是有效,但GET通常會這樣。 GET唯一的警告就是連接必須在URL提取之後被取消以防止下載身體(如Seva下面所建議的) – RunLoop 2010-03-13 03:27:58
JK:你的意思是'connection:willSendRequest:redirectResponse:'。我認爲你的評論是錯誤的,直到我查閱並看到選擇器的第三個組件。 – 2010-03-13 05:37:21
發出HTTP GET請求,不遵循重定向,分析Location頭。這就是重定向的目標。
特別是在Cocoa中,對委託使用異步請求,處理委託中的didReceiveResponse。第一個響應將是重定向。一旦您在處理程序中提取URL,請在連接上調用[cancel]。
編輯:根據提供者,HEAD而不是GET可能會或可能無法工作。如果你不遵循重定向,響應數據將不會被加載,所以沒有傳輸開銷的GET。
LongUrlPlease提供了一個擴展短url的API。
什麼是長URL和什麼是短URL?是http://stackoverflow.com/長或短? :) – 2010-03-12 18:28:53
我通過簡短的網址假設他指的是URL縮短服務,如tinyurl.com或bit.ly – Jonathan 2010-03-12 18:29:50
我假設他是指來自URL縮短服務的URL。您應該可以通過查看對URL的請求的響應標題而無需實際開始流式傳輸正文。 – 2010-03-12 18:29:57