2012-01-09 76 views
2

我試圖通過Rails訪問Basecamp API,但它使用SocketError響應。我的代碼是這樣的:試圖通過Rails訪問Basecamp API

require 'rubygems' 
require 'net/https' 
http = Net::HTTP.new('https://webonise.basecamphq.com') 
http.use_ssl = true 
http.start do |http| 
    req = Net::HTTP::GET.new('/projects.xml') 
    req.basic_auth 'username' , 'password' 
    resp, data = http.request(req) 
end 

的響應是:

SocketError: getaddrinfo: Name or service not known 

回答

2

Net::HTTP.new需要主機名,而不是一個URI,作爲它的第一個參數。嘗試調用URI.parse到URI分解成你想要第一部分:

require 'rubygems' 
require 'net/http' 
uri = URI.parse("https://webonise.basecamphq.com/") 
http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 
req = Net::HTTP::Get.new(uri.request_uri) 
req.basic_auth 'username', 'password' 
resp = http.request(req) 
body = resp.body 

您還可以得到身體從body方法的響應。

+0

感謝兄弟它真的幫助我很多:) – kunnu 2012-01-09 16:41:16

+0

乾杯!在這個網站上做的事情是接受適合你的答案:http://stackoverflow.com/faq#howtoask – rkb 2012-01-10 03:35:06