首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在rest-client中查找POST请求的重定向-url

在rest-client中查找POST请求的重定向-url
EN

Stack Overflow用户
提问于 2014-04-18 07:56:40
回答 2查看 6.3K关注 0票数 2

我需要得到重定向的网址名称,为我提出的帖子请求。

代码语言:javascript
复制
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,而不需要重新定义字符串?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-18 08:29:48

这应该是工作

代码语言:javascript
复制
begin
  RestClient.post url, :param => p
rescue Redirect => e
  redirected_url = e.url
end

更新

由于上述方法不起作用,我建议您尝试:

代码语言:javascript
复制
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的建议实现的结合。

票数 4
EN

Stack Overflow用户

发布于 2014-10-01 06:39:09

万一有人遇到类似的情况,并且想在重定向之后得到最终的url,下面的操作对我来说是有效的。

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23149911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档