Столкнувшись с проблемой с Net::HTTP Получить в Ruby

Это запрос на завивку, который я хочу преобразовать в ruby:

curl -k --get --data 'session.id=48d59b37-5875-4e49-8d79-6cf097d740f&ajax=executeFlow&project=test&flow=two' https://localhost:8443/executor

Я должен ответить так:

{
  "message" : "Execution submitted successfully with exec id 688",
  "project" : "test",
  "flow" : "two",
  "execid" : 688
}

Я преобразовал его в следующий рубиновый код:

require 'json'
require 'uri'
require 'net/http'

url = URI("https://localhost:8443/executor")
http = Net::HTTP.new(url.host, url.port)
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
http.use_ssl = (url.scheme == 'https')
request = Net::HTTP::Get.new(url.request_uri)
request.set_form_data({'session.id' => '48d59b37-5875-4e49-8d79-6cf097d740f', 'ajax' => 'executeFlow', 'project' => 'test', 'flow' => 'two'}) 
response = http.request(request)
puts response

Но это выдает html-код страницы с ошибкой вместо ожидаемого ответа. Что я здесь делаю неправильно?


person Prachi g    schedule 28.09.2014    source источник
comment
Я думаю, что это неправильно Net::HTTP::Get.new(url.request_uri). url.request_uri возвращает /executor. Я думаю, вам нужно передать весь объект url   -  person PericlesTheo    schedule 28.09.2014
comment
В этом случае я получаю следующую ошибку: NoMethodError: undefined method `empty?' для #‹URI::HTTPS:0x007fcb49050610›   -  person Prachi g    schedule 28.09.2014


Ответы (1)


Это исходит из Net::HTTP документации, и я не проверял ее.

url = URI("https://localhost:8443/executor")
request = Net::HTTP::Post.new(url)
request.set_form_data({'session.id' => '48d59b37-5875-4e49-8d79-6cf097d740f', 'ajax' => 'executeFlow', 'project' => 'test', 'flow' => 'two'}) 

response = Net::HTTP.start(url.hostname, url.port, use_ssl: url.scheme == 'https', verify_mode: OpenSSL::SSL::VERIFY_NONE) do |http|
  http.request(request)
end
person PericlesTheo    schedule 28.09.2014
comment
Я получаю следующую ошибку: NoMethodError: undefined method empty?' for #<URI::HTTPS:0x007fcb490b7a18> - person Prachi g; 29.09.2014
comment
Попробуйте это: stackoverflow.com/questions/2423827/ - person PericlesTheo; 29.09.2014