gpt4 book ai didi

Ruby - 远程文件下载...超时?

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:26 24 4
gpt4 key购买 nike

原谅标签。我正在尝试将一个文件从远程下载到本地,但我总是得到一个正好是 310 字节的文件(无论我选择下载什么文件)。我尝试将超时设置为 0,但这不起作用。我究竟做错了什么?谢谢!

        @downloadUrl = 'https://username:password@api.net'
Net::HTTP.start(@downloadUrl) do |http|
response = http.get('/file.ext')
open('/Users/me/file.ext', "wb", :read_timeout=>0) do |file|
file.write(response.body)
end
end

编辑:我不想使用 httpclient,我想使用标准的 net/http。我快到了,但我一直在 Net::HTTP.start(url.path)。但是当我远程“https”时,我得到了 ECONNREFUSED。 ...越来越近?

    url = URI.parse('https://api.net/file.ext') 
@request = Net::HTTP.start(url.path)
@request.basic_auth 'username', 'password'
sock = Net::HTTP.new(url.host, 443)
sock.use_ssl = true
sock.ssl_version='SSLv3'
sock.start do |http|
response = http.get(@request)
open('/Users/me/file.ext', "wb", :read_timeout=>0) do |file|
file.write(response.body)
end
end

最佳答案

通过 SSL 访问时,使用 httpclient 会简单得多。

gem 安装 httpclient

我还没有尝试过,但这应该适合你。这是 rdoc .

require 'httpclient'

domain = "https://api.net/file.ext"
username = "username"
password = "password"

clnt = HTTPClient.new
clnt.set_auth(domain, username, password)

res = clnt.get_content(https_url)

可以引用"writing a binary file in ruby"将您的回复保存到文件的问题。

已更新 使用 net/http

您应该执行 Net::HTTP.start(url.host, url.port) 而不是 Net:HTTP.start(url.path)See RDoc for Net::HTTP.start .

url = URI.parse("https://api.net/file.ext")
download_file = opne("/Users/me/file.ext", "wb")
request = Net::HTTP.start(url.host, url.port)

# .. set basic auth, verify peer etc

begin
request.request_get(url.path) do |resp|
resp.read_body { |segment| download_file.write(segment) }
end
ensure
download_file.close
end

关于Ruby - 远程文件下载...超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6930437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com