在rails中有一种方法可以获取从Net :: HTTP调用返回的头信息

时间:2013-07-04 23:53:23

标签: ruby-on-rails http header

我正在将产品上传到后端系统,该系统采用HTTP / XML一切正常运行...我发送产品,结果我得到了大量的XML。 令人惊叹的是它几乎什么也没包含。一些包含其他标签的标签,包含成功
果然信息对吗? :)

日期戳很好,我的老板要求。我需要一种方法来记录“成功”的发送时间。不是我收到它时,因为我的时间戳可能与服务器时间戳不匹配。

我使用SOAP-UI工具发送原始XML,因为它允许我更快地更改XML并测试它是否有效。在原始响应中,我看到发送响应的服务器和时间。

这是原始响应中的内容。

HTTP/1.1 200 OK
Date: Thu, 04 Jul 2013 23:46:00 GMT
Server: Apache
Set-Cookie: PHPSESSID=XXXXXXXXXX; expires=Fri, 05-Jul-2013 00:01:00 GMT; path=/enterprise11301; domain=XXXX.net.nz; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: CUSTOMER=deleted; expires=Wed, 04-Jul-2012 23:45:59 GMT; path=/enterprise11301; domain=staging.XX.net.nz; secure; httponly
Set-Cookie: CUSTOMER_INFO=deleted; expires=Wed, 04-Jul-2012 23:45:59 GMT; path=/enterprise11301; domain=staging.XX.net.nz; secure; httponly
Set-Cookie: CUSTOMER_AUTH=deleted; expires=Wed, 04-Jul-2012 23:45:59 GMT; path=/enterprise11301; domain=staging.XX.net.nz; secure; httponly
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 282
Content-Type: text/xml; charset=UTF-8

所以当我在ruby / rails中发送完全相同的东西时,我想要那些信息 这是我发送和获取响应的代码。

 url = URI.parse( @credentials[:endpoint] );
 http = Net::HTTP.new(url.host, url.port)
 http.use_ssl = false
 http.verify_mode = 0
 request = Net::HTTP::Post.new(url.path);
 request.body = @xml    
 response = http.start { |http_runner| http_runner.request( request ) }

那么有关如何扩展它以获得对RAW的访问的任何想法吗?

1 个答案:

答案 0 :(得分:0)

好的..我做了一堆挖掘,最后刚刚调用了:响应方法。

raise response.to_hash.to_xml   #And poof I see what I'm looking for...