2012-11-17 69 views
1

有人可以向我解釋爲什麼我在執行POST時遇到此錯誤?我從the Ruby-docs page中摘取了片段。Ruby HTTP POST - 錯誤

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

使用''URI.parse( 「http://ws.mywebservice.com/ws.php」)'' – 23tux

+0

謝謝。這樣做時出現同樣的錯誤: – Slinky

+0

錯誤:res = Net :: HTTP.start(uri.hostname,uri.port)do | http | – Slinky

回答

3

如果您使用1.9.3之前版本的Ruby,則應使用uri.host

URI#hostname被添加到Ruby 1.9.3中。它URI#host不同,它是,它從IPv6主機名中刪除括號。對於非IPv6主機名,它應該具有相同的行爲。

(從APIdock)執行:

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