Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Получение файла через отправку запросов


(Pavel Gavrilov) #1

Столкнулся с такой ситуацией. Пытаюсь скачать файл с сайта, сначала отправляется POST запрос, затем через GET получаю сам файл - так работает в браузере. Повторил все действия в Fiddler (сохранив header - ы запросов) все отпработало верно. Пытаюсь сделать через библиотеки net/http - не получается

    require 'net/http'
    require 'uri'
    require 'watir-webdriver'
    require 'open-uri'
    
    def auth
      @browser = Watir::Browser.new
      @browser.goto ''
      @browser.text_field(:id, 'UsernameTextbox').set ''
      @browser.text_field(:id, 'PasswordTextbox').set ''
      @browser.button(:id, 'LoginButton').click
    end
    
    def set_cookies
      @header = { 'Cookie' => "" }

      cookie_array = @browser.driver.manage.all_cookies
      cookie_array.each { |cookie| @header["Cookie"] = @header["Cookie"].concat(cookie[:name] + "=" + cookie[:value]+"; ") }
    end
    
    
    auth
    set_cookies
    
    address = URI.parse ''
    post_query = ''
    get_query = ''
    
    
    post_request = Net::HTTP::Post.new(post_query, @header)
    post_request.body = ''
    get_request = Net::HTTP::Get.new(get_query, @header)
    
    
    res = Net::HTTP.start(address.host) do |http|
      response = http.request(post_request)
      response1 = http.request(get_request)
    end

POST запрос являет - XMLHttpRequest
Ошибка в результате выдается - 500 => Net::HTTPInternalServerError for ‘’- - unhandled response

Может быть я как то неверно этот POST запрос передаю, (да пытался еще в заголовке POST запроса передать ‘X-Requested-With’ => ‘XMLHttpRequest’ но результат тотже)

В браузере если выполнить запросы то тоже произойдет ошибка, работает верно лишь тогда когда повторяю выполнение запросов в firebug командой “Resend”


(Дмитрий Жарий) #2

В целом, многое может зависеть от реализации приложения.
Если есть возможность, то я рекомендую запустить приложение под отладчиком для того, чтобы выяснить причину возникновения 500-й ошибки.

Попробуйте также настроить Fiddler как прокси для вашего скрипта, выкачивающего файл.
Затем – сравните два запроса: тот который отрабатывает корректно и тот, что вызывает ошибку.