Crystal lang:重定向后如何查找结束URL?

Crystal lang:重定向后如何查找结束URL?,url,redirect,httpclient,crystal-lang,Url,Redirect,Httpclient,Crystal Lang,我现在正在用Crystal将一个脚趾浸入水中,作为练习,尝试将我的一个Python脚本移植到另一个脚本中 该脚本从URL下载“最新”PDF,URL的格式为:“”。当被访问时,该URL会自动重定向到页面以获取最新下载,例如“ 我很难在Crystal中实现这一点,这样我就可以获取重定向最终到达的实际URL 在Python中,我会: currenturl = urllib.request.urlopen(latesturl) #above will redirect to URL of format

我现在正在用Crystal将一个脚趾浸入水中,作为练习,尝试将我的一个Python脚本移植到另一个脚本中

该脚本从URL下载“最新”PDF,URL的格式为:“”。当被访问时,该URL会自动重定向到页面以获取最新下载,例如“

我很难在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文档版本,当前版本为(但我认为在0.24.1和0.26.1之间没有相关的更改)

但您可以通过读取HTTP响应的
位置
头轻松访问重定向URL:

response = HTTP::Client.get latesturl
endurl = response.headers["Location"]

伟大的谢谢还有一个小难题:
response.headers[“Location”]
返回endURL的相对路径,而不是完整URL。也就是说,我得到的是
/download/4563/
而不是
http://somesite.com/download/4563/
。没什么大不了的,因为我可以将域存储在一个var中并重新连接它,但是有没有一种内置的方法来获取完整的URL?没有。这只是直接从httpapi检索普通值。正如前面提到的
HTTP::Client
还不理解重定向的概念,因此不会为您提供完全限定的URL。