我现在只是用Crystal浸入水中,作为练习,尝试移植我的一个Python脚本。
有问题的脚本从格式为"http://somesite.com/download/latest/"的URL下载"最新"PDF。访问该 URL 时,会自动重定向到最新下载的页面,例如。"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"的文档,我看不到任何方法可以返回重定向最终的实际 URL。可能吗?
Crystal 的HTTP::Client
目前无法自动跟踪重定向。
请注意,您正在阅读过时的 API 文档版本,当前版本为 https://crystal-lang.org/api/latest/HTTP/Client.html(我认为 0.24.1 和 0.26.1 之间没有相关更改(。
但是,您可以通过读取 HTTP 响应的Location
标头轻松访问重定向 URL:
response = HTTP::Client.get latesturl
endurl = response.headers["Location"]