Как заставить HTTP ДОБРАТЬСЯ с измененными заголовками?

Итак, я выяснил, в чем заключается проблема, когда мое назначение потребовало от меня использования файла SQL с 180 000 операторов вставки, поэтому это заняло так много времени. Мне пришлось вручную изменить их, чтобы они были только одним оператором вставки с несколькими значениями.

15
задан the Tin Man 26 July 2012 в 17:38
поделиться

2 ответа

Created a solution that worked for me (worked very well) - this example getting a range offset:

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
25
ответ дан 1 December 2019 в 02:02
поделиться

Если у Вас есть доступ к журналам сервера, попытайтесь сравнить запрос от браузера с тем от 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 пара.

6
ответ дан 1 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: