首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何查看ActiveResource请求的HTTP响应?

如何查看ActiveResource请求的HTTP响应?
EN

Stack Overflow用户
提问于 2008-10-22 23:31:01
回答 9查看 6.7K关注 0票数 7

我正在尝试调试一个无法工作的ActiveResource调用。

查看ActiveResource发出的请求的HTTP响应的最佳方式是什么?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-10-25 13:09:11

很简单。只需看一下返回的响应。:)

有两个选项:

  • 您的计算机上有源文件。编辑它。在适当的位置放置一个puts response.inspect。记住删除它。
  • Ruby有开放的类。找到正确的方法并重新定义它来做你想做的事情,或者使用别名和调用链来做这件事。可能有一个方法返回响应--抓取它,打印它,然后返回它。

下面是后一种选择的一个愚蠢的例子。

代码语言:javascript
运行
复制
# Somewhere buried in ActiveResource:
class Network
  def get
    return get_request
  end

  def get_request
    "I'm a request!"
  end
end

# Somewhere in your source files:
class Network
  def print_request
    request = old_get_request
    puts request
    request
  end
  alias :old_get_request :get_request
  alias :get_request :print_request
end

假设第一个类定义在ActiveRecord源文件中。第二个类定义在您的应用程序中的某个位置。

代码语言:javascript
运行
复制
$ irb -r openclasses.rb 
>> Network.new.get
I'm a request!
=> "I'm a request!"

您可以看到它打印它,然后返回它。很整洁,是吧?

(尽管我的简单示例没有使用它,因为它没有使用Rails,但是可以查看alias_method_chain来组合您的别名调用。)

票数 3
EN

Stack Overflow用户

发布于 2011-08-24 20:30:03

Monkey修补连接以启用Net::HTTP调试模式。参见https://gist.github.com/591601 -我写它就是为了解决这个问题。将这个要点添加到您的rails应用程序将会给您提供Net::HTTP.enable_debug!Net::HTTP.disable_debug!,您可以使用它们来打印调试信息。

HTTP调试模式是不安全的,不应该在生产中使用,但它对调试非常有用。

票数 14
EN

Stack Overflow用户

发布于 2011-11-08 02:25:43

config/initializers/中添加一个名为'debug_connection.rb'的新文件,其中包含以下内容:

代码语言:javascript
运行
复制
class ActiveResource::Connection
  # Creates new Net::HTTP instance for communication with
  # remote service and resources.
  def http
    http = Net::HTTP.new(@site.host, @site.port)
    http.use_ssl = @site.is_a?(URI::HTTPS)
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl
    http.read_timeout = @timeout if @timeout
    # Here's the addition that allows you to see the output
    http.set_debug_output $stderr
    return http
  end
end

这会将整个网络流量打印到$stderr。

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

https://stackoverflow.com/questions/227907

复制
相关文章

相似问题

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