Net/HTTP debug tips

set debug output

http = Net::HTTP.new("www.something.com", 80)
http.set_debug_output($stdout)

这样就可以在post的时候显示传输的内容,便于调试。

使用nc监视http请求数据

浏览器请求数据可以通过firebug等工具查看,但是有时候需要自己的程序去请求其他应用,这样调试起来很不方便。
通过netcat可以监听一个端口,并且随时回显请求的数据的最原始状态。

终端1:

 nc -v -l localhost 12345

返回:

Connection from 0.0.0.0 port 12345 [tcp/*] accepted PUT / HTTP/1.1 User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 Host: localhost:12345 Accept: */*
Content-Length: 5
Content-Type: application/x-www-form-urlencoded

{a:1}

终端2:

curl -XPUT http://localhost:12345 -d '{a:1}'

net/http set_form_data

Ruby自带的net/http库,的set_form_data方法在传输之前会进行encode_www_form编码,而普通的post方法是不会的:

def set_form_data(params, sep = '&')
  query = URI.encode_www_form(params)
  query.gsub!(/&/, sep) if sep != '&'
  self.body = query
  self.content_type = 'application/x-www-form-urlencoded'
end



http://rubylution.herokuapp.com/topics/20

你可能感兴趣的:(浏览器,Firebug,query,工具,终端,output)