2014-07-07 21 views
-1

我需要帮助在ruby中创建post请求。但我不想使用Net::Http库。我只是想使用curl命令来发出请求。需要帮助在红宝石发出post request

这里是我现有的代码。

`

uri = URI.parse("http://example.com") 
header = {'Content-Type' => 'application/json','Accept' => "application/json"} 
req_data = {"name" => params[:user][:login], "pass" =>params[:user][:password]} 
http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Post.new(uri.request_uri, header) 
request.body = req_data.to_json 
response = http.request(request) 

`

+1

为什么不是'Net :: HTTP'? –

+0

@Зелёный手段? –

+0

我尝试使用'Net :: HTTP',但我没有得到任何回应,除了HTTP :: OK 200.但实际上它返回json – Kushal

回答

0

你有机会从用户的输入执行命令。随着Shellwords.escape应该没问题。

cmd_tpl = %{curl -H "Content-Type: application/json" -H "Accept: application/json" -d "name=%s&pass=%s" %s} 
cmd = cmd % [ 
       Shellwords.escape(URI.encode(params[:user][:login])), 
       Shellwords.escape(URI.encode(params[:user][:password])), 
       Shellwords.escape("http://example.com") 
      ] 
content = `#{cmd}`