水晶郎:重定向后如何找到结束网址?



我现在只是用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"]

相关内容

最新更新