当前位置:  开发笔记 > 编程语言 > 正文

如何使用修改过的标头进行HTTP GET?

如何解决《如何使用修改过的标头进行HTTPGET?》经验,为你挑选了2个好方法。

使用修改后的头文件在Ruby中发出HTTP GET请求的最佳方法是什么?

我希望从日志文件的末尾获取一系列字节,并且一直在使用以下代码,但是服务器正在回放一个响应,说"它是服务器无法理解的请求"(服务器是阿帕奇).

require 'net/http'
require 'uri'

#with @address, @port, @path all defined elsewhere

httpcall = Net::HTTP.new(@address, @port)

headers = {
  'Range' => 'bytes=1000-'
}

resp, data = httpcall.get2(@path, headers)

    有没有更好的方法在Ruby中定义标头?

    有谁知道为什么这会对Apache失败?如果我在浏览器中访问,http://[address]:[port]/[path]我会得到我正在寻找的数据而没有问题.

Demi.. 25

创建了一个适合我的解决方案(工作得非常好) - 这个示例获得范围偏移:

require 'uri'
require 'net/http'

size = 1000 #the last offset (for the range header)
uri = URI("http://localhost:80/index.html")
http = Net::HTTP.new(uri.host, uri.port)
headers = {
    'Range' => "bytes=#{size}-"
}
path = uri.path.empty? ? "/" : uri.path

#test to ensure that the request will be valid - first get the head
code = http.head(path, headers).code.to_i
if (code >= 200 && code < 300) then

    #the data is available...
    http.get(uri.path, headers) do |chunk|
        #provided the data is good, print it...
        print chunk unless chunk =~ />416.+Range/
    end
end


MarkusQ.. 6

如果您可以访问服务器日志,请尝试将来自浏览器的请求与Ruby中的请求进行比较,看看是否能告诉您任何内容.如果这不实用,请启动Webrick作为文件服务器的模拟.不要担心结果,只需比较请求,看看他们在做什么不同.

至于Ruby样式,你可以内联移动标题,如下所示:

httpcall = Net::HTTP.new(@address, @port)

resp, data = httpcall.get2(@path, 'Range' => 'bytes=1000-')

另请注意,在Ruby 1.8+中,您几乎肯定会运行,Net::HTTP#get2返回单个HTTPResponse对象,而不是一resp, data对.



1> Demi..:

创建了一个适合我的解决方案(工作得非常好) - 这个示例获得范围偏移:

require 'uri'
require 'net/http'

size = 1000 #the last offset (for the range header)
uri = URI("http://localhost:80/index.html")
http = Net::HTTP.new(uri.host, uri.port)
headers = {
    'Range' => "bytes=#{size}-"
}
path = uri.path.empty? ? "/" : uri.path

#test to ensure that the request will be valid - first get the head
code = http.head(path, headers).code.to_i
if (code >= 200 && code < 300) then

    #the data is available...
    http.get(uri.path, headers) do |chunk|
        #provided the data is good, print it...
        print chunk unless chunk =~ />416.+Range/
    end
end



2> MarkusQ..:

如果您可以访问服务器日志,请尝试将来自浏览器的请求与Ruby中的请求进行比较,看看是否能告诉您任何内容.如果这不实用,请启动Webrick作为文件服务器的模拟.不要担心结果,只需比较请求,看看他们在做什么不同.

至于Ruby样式,你可以内联移动标题,如下所示:

httpcall = Net::HTTP.new(@address, @port)

resp, data = httpcall.get2(@path, 'Range' => 'bytes=1000-')

另请注意,在Ruby 1.8+中,您几乎肯定会运行,Net::HTTP#get2返回单个HTTPResponse对象,而不是一resp, data对.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有