如何查看通过rails应用程序发送的HTTP请求?

时间:2009-07-18 23:13:05

标签: ruby-on-rails ruby http httpwebrequest

我正在尝试与第三方网站进行交互,通信如下。

发送此请求

POST /Service/LabelService.asmx/GetLabelXML HTTP/1.1
Host: www.host.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
labelRequestXML=<LabelRequest> ... </LabelRequest>

收到此回复

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?> <LabelRequestResponse> ... </LabelRequestResponse>

我正在使用Rails,所以我试图使用Net :: HTTP来设置它。我尝试了一些东西,但是我最好的结果是“现有连接被远程主机强行关闭”。这是我尝试之一的一个例子。

  require 'net/http'
  require 'net/https'
  require 'uri'
  Net::HTTP.version_1_1

  def get_shipping_label
    url = URI.parse('www.host.com/LabelService/LabelService.asmx/BuyPostageXML')
    header = {"Content-Type" => "application/x-www-form-urlencoded"}
    data = "labelRequestXML=<LabelRequest></LabelRequest>"
    http = Net::HTTP.start(url.host)
    response, body = http.post('/LabelService/LabelService.asmx/BuyPostageXML', data)
  end

现在我的目标显然是让通信工作,但更重要的是,我想知道如何看到我的rails应用程序发送的HTTP请求,以便将来调试这些问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用Wireshark等网络协议分析工具。

答案 1 :(得分:1)

我不建议您使用Wireshark,但建议使用OWASP WebScarab