2013-04-11 135 views
0

使用Ruby流二进制数据到服务器,我只是尝试解析流文件到服务器,我有badrequst HTTP问题。任何人都可以帮助我通过使用Net :: HTTP将数据发送到服务器。使用网:: HTTP红宝石

def addbitstream(url, path, file_bitstream) 
    uri = URI.parse(url) 
    http = Net::HTTP.new(uri.host, 443) 
    http.use_ssl = true 
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
    request = Net::HTTP::Post.new(path) 

    f = File.new(file_bitstream) 
    file = File.open(f) 
    n = 6 
    offset = 0 
    request.body = "" 

    while (offset < File.size(file)) 
    buffer = readfileAsbitstream(file, offset, n) 
    request.body = buffer 
    response = Net::HTTP.start(uri.host, 443) {|http| http.request(request) } 

    offset += n 
    end 
end 

回答

0

虽然我没有做过文件流,你将与此代码的第一个问题是:HTTP.start关闭执行块,当它传递一个后连接。也许改变你的嵌套顺序会有所帮助。

我会建议使用宝石来包装HTTP请求反正如REST-client,我在默认情况下想流文件上传。

+0

感谢你的建议,你有过将数据发送到服务器的任何想法,我想通过NET :: HTTP每块发送到服务器? – MHP 2013-04-11 16:37:16

0

下面是如何使用Net::HTTP

url ="www.yoururl.com" 
uri = URI.parse(url) 
http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Post.new(uri.request_uri) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
response = http.request(request)