我需要得到重定向的网址名称,为我提出的帖子请求。
begin
RestClient.post url, :param => p
rescue => e
e.inspect
end答复:"302 Found: <html><body>You are being <a href=\"https://www.abcd.com/971939frwddm\">redirected</a>.</body></html>\n"
我需要的只是uri:www.abcd.com/971939frwddm
我的问题是,我是否可以直接从对象e获取uri,而不需要重新定义字符串?
发布于 2014-04-18 08:29:48
这应该是工作
begin
RestClient.post url, :param => p
rescue Redirect => e
redirected_url = e.url
end更新
由于上述方法不起作用,我建议您尝试:
RestClient.post(url, :param => p) do |response, request, result, &block|
if [301, 302, 307].include? response.code
redirected_url = response.headers[:location]
else
response.return!(request, result, &block)
end
end(这是如何对所有请求类型遵循重定向和Request实现follow_redirection的建议实现的结合。
发布于 2014-10-01 06:39:09
万一有人遇到类似的情况,并且想在重定向之后得到最终的url,下面的操作对我来说是有效的。
result = RestClient.get(url, :user_agent => AGENT, :cookies => @cookies){ |response, request, result, &block|
if [301, 302, 307].include? response.code
response.follow_redirection(request, result, &block)
else
final_url = request.url
response.return!(request, result, &block)
end
}final_url将包含最终的redirect_url
https://stackoverflow.com/questions/23149911
复制相似问题