2013-06-26 140 views
1

我是Ruby編程的新手。我正在嘗試使用HTTP GET請求獲取Google XRDS,但卻遇到了NoMethodError(未定義的方法`set_body_internal')錯誤。以下是我的代碼。任何幫助深表感謝。Ruby NoMethodError(undefined method`set_body_internal')with HTTP get

require "net/https" 
require "uri" 

class OpenidController < ApplicationController 

    def getOpenIdXRD 
    print "Hello...\n" 
    uri = URI.parse("https://gmail.com/.well-known/host-meta") 
    print "Hello...1\n" 
    # Shortcut 
    #response1 = Net::HTTP.get_response(uri) 

    http = Net::HTTP.new(uri.host, uri.port) 
    http.use_ssl = true 
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
    print "Hello...2\n" 
    File response1 = http.request(request) 
    print "Hello...3\n" 
    response1.body 
    response1.status 
    # Will print response.body 
    # Net::HTTP.get_print(uri) 
    end 

end 

這裏是我的輸出:

 
Completed in 2ms (View: 1, DB: 72) | 200 OK [IP] 
Hello... 
Hello...1 
Hello...2 
tton] 
    ←[4;36;1mSQL (188.1ms)←[0m ←[0;1mSET SQL_AUTO_IS_NULL=0←[0m 

Processing OpenidController#getOpenIdXRD (for 127.0.0.1 at 2013-06-25 20:28:04) 
[GET] 
    Parameters: {"user"=>""} 

NoMethodError (undefined method `set_body_internal' for #): 

回答

1

你還沒有實際分配一個值request參數...

response1 = http.request(request) 

...也... ...

File response1 

...沒有多大意義e - 也許你想將結果寫入文件?

最後,如果你只是想要做一個GET,在此基礎上的東西應該爲你工作...

url = " ... insert valid path here ..." 

res = Net::HTTP.start('... hostname here ...', 80) {|http| 
    http.get(url) 
} 
puts res.body 
相關問題