2017-05-30 32 views
0

我是新來的紅寶石,我正在學習它。ruby​​代碼從基本認證的URL下載文件

我期待從一個網址下載文件(例如:https://myurl.com/123/1.zip),並帶有基本認證。我試圖執行以下Ruby腳本,從Windows命令提示符下..

require 'net/http' 

uri = URI('https://myurl.com/123/1.zip') 


Net::HTTP.start(uri.host, uri.port, 
    :use_ssl => uri.scheme == 'https', 
    :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http| 

    request = Net::HTTP::Get.new uri.request_uri 
    request.basic_auth '[email protected]', 'John123' 

    response = http.request request # Net::HTTPResponse object 

    puts response 

    puts response.body 
end 

當我執行該腳本,我看不出有什麼錯誤,但該文件沒有下載。您能否請我更正我的代碼

+1

要打印的響應。而是將其寫入文件。 https://gist.github.com/wbinglee/6f8ed65dded41fb9ccb2 – Sajin

回答

0

您幾乎在那裏。只需使用Ruby的SEND_DATA方法

require 'net/http' 

uri = URI('https://myurl.com/123/1.zip') 

Net::HTTP.start(uri.host, uri.port, 
    :use_ssl => uri.scheme == 'https', 
    :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http| 

    request = Net::HTTP::Get.new uri.request_uri 
    request.basic_auth '[email protected]', 'John123' 

    http.request(request) do |response| 
    send_data(response.body, filename: 'set_filename.pdf') 
    end 
end 
+0

這給出了一個錯誤'NoMethodError:undefined method'send_data'' – Clintm

1

你可以試試這個:

require 'open-uri' 

File.open('/path/your.file', "wb") do |file| 
    file.write open('https://myurl.com/123/1.zip', :http_basic_authentication => ['[email protected]', 'John123']).read 
end