HTTP-запрос работает в Postman, но не в Ruby (ошибка 502) - PullRequest
0 голосов
/ 07 октября 2019

Я довольно новичок в Ruby, но мне нужно отладить код Ruby, который я не написал.

В коде Ruby сделан HTTP-запрос. После небольшой регистрации я обнаружил, что объект ответа показывает ошибку 502. Когда я пытаюсь выполнить тот же запрос в Postman, я получаю ожидаемый успешный ответ:

enter image description here

Я даже пытался буквально скопировать / пропустить сгенерированный фрагмент кода Ruby Postman. и он все еще дает мне ошибку 502. При запуске из кода Ruby.

Вот часть, отвечающая за запрос (метод запроса, часть post):

class PatentApi
  # Patent analysis API wrapper

  require 'uri'
  require 'net/http'

  DEFAULT_ENDPOINT = configatron.patent_api.endpoint.freeze

  # POST /api/v1/graph
  def post_complete_patent_graph(data)
    response = post('graph', data.to_json)
    response
  end

  # Send as POST request
  def post(path, options = {})
    request(:post, path, options)
  end

  # Build the request and return response
  def request(method, path, options)
    url = URI.parse(DEFAULT_ENDPOINT + path)
    Rails.logger.info (url.inspect) # The url looks ok in the logs !
    params = options # After logging, this value is ok
    case method
      when :get
        url.query = URI.encode_www_form(params)
        http = Net::HTTP.new(url.host, url.port)
        request = Net::HTTP::Get.new(url.request_uri)
        request["Accept"] = 'application/json'
        request["Content-Type"] = 'application/json'
        response = http.request(request)
        return response
      when :post
        request = Net::HTTP::Post.new(url, 'Content-Type' => 'application/json')
        request.body = params
        response = Net::HTTP.start(url.host, url.port, :read_timeout => 320) do |http|
          http.request(request)
        end
        Rails.logger.info 'RESPONSE'
        Rails.logger.info (response.code) # 502 ! :(
        Rails.logger.info (response.message)
        Rails.logger.info 'END RESPONSE'
        return response
    end
  end
end

1 Ответ

0 голосов
/ 07 октября 2019

Попытаетесь ли вы включить заголовок Content-Type, например

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...