Crystal-lang:如何在重定向后找到结束 URL?
Crystal-lang: How to Find End URL After a Redirect?
我现在只是用 Crystal 试一试,作为练习,尝试移植我的一个 Python 脚本。
有问题的脚本从 URL 下载 'latest' PDF,格式为:“http://somesite.com/download/latest/". When visited that URL automatically redirects to the page for the latest download eg. "http://somesite.com/download/4563/”
我很难弄清楚如何在 Crystal 中实现它,以便我可以获取重定向结束的实际 URL。
在Python我做:
currenturl = urllib.request.urlopen(latesturl)
#above will redirect to URL of format http://somesite.com/download/XXXXX/
#where XXXXX is the current d/load
endurl = currenturl.geturl()
...这让我在 "endurl" 变量中结束 URL。
但是,对于 Crystal 的 "http/client",reading the docs 我看不出有任何方法可以 return 重定向最终的实际 URL在。可能吗?
Crystal 的 HTTP::Client
目前无法自动跟随重定向。
请注意,您正在阅读 API 文档的过时版本,当前版本为 https://crystal-lang.org/api/latest/HTTP/Client.html(我认为 0.24.1 和 0.26 之间没有相关变化.1 虽然)。
但是您可以通过阅读 HTTP 响应的 Location
header 轻松访问重定向 URL:
response = HTTP::Client.get latesturl
endurl = response.headers["Location"]
我现在只是用 Crystal 试一试,作为练习,尝试移植我的一个 Python 脚本。
有问题的脚本从 URL 下载 'latest' PDF,格式为:“http://somesite.com/download/latest/". When visited that URL automatically redirects to the page for the latest download eg. "http://somesite.com/download/4563/”
我很难弄清楚如何在 Crystal 中实现它,以便我可以获取重定向结束的实际 URL。
在Python我做:
currenturl = urllib.request.urlopen(latesturl)
#above will redirect to URL of format http://somesite.com/download/XXXXX/
#where XXXXX is the current d/load
endurl = currenturl.geturl()
...这让我在 "endurl" 变量中结束 URL。
但是,对于 Crystal 的 "http/client",reading the docs 我看不出有任何方法可以 return 重定向最终的实际 URL在。可能吗?
Crystal 的 HTTP::Client
目前无法自动跟随重定向。
请注意,您正在阅读 API 文档的过时版本,当前版本为 https://crystal-lang.org/api/latest/HTTP/Client.html(我认为 0.24.1 和 0.26 之间没有相关变化.1 虽然)。
但是您可以通过阅读 HTTP 响应的 Location
header 轻松访问重定向 URL:
response = HTTP::Client.get latesturl
endurl = response.headers["Location"]