Ruby HTTP POST - 错误

时间:2012-11-17 20:28:34

标签: ruby http post

有人可以向我解释为什么在执行此POST时出现此错误?我从the Ruby-docs page中取出了摘录。

undefined method `hostname' for #URI::HTTP:0x10bd441d8 URL:http://ws.mittthetwitapp.com/ws.phpmywebservice (NoMethodError)

也许我错过了一项要求或什么?

require 'net/http'

uri= URI('http://ws.mywebservice.com/ws.php')
req = Net::HTTP::Post.new(uri.path)
req.set_form_data('xmlPayload' => '<TestRequest><Message>Hi Test</Message></TestRequest>')

res = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(req)
end

case res
 when Net::HTTPSuccess, Net::HTTPRedirection
 # OK
else
 res.value
end

1 个答案:

答案 0 :(得分:3)

如果您使用的是1.9.3之前的Ruby版本,则应使用uri.host

Ruby 1.9.3中添加了

URI#hostname。它URI#host不同,因为它从IPv6主机名中删除了括号。对于非IPv6主机名,它的行为应该相同。

实施(来自APIdock):

def hostname
  v = self.host
  /\A\[(.*)\]\z/ =~ v ? $1 : v
end