有人可以向我解释为什么在执行此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
答案 0 :(得分:3)
如果您使用的是1.9.3之前的Ruby版本,则应使用uri.host
。
URI#hostname
。它与URI#host
不同,因为它从IPv6主机名中删除了括号。对于非IPv6主机名,它的行为应该相同。
实施(来自APIdock):
def hostname
v = self.host
/\A\[(.*)\]\z/ =~ v ? $1 : v
end