Отправка на URL-адрес со строкой запроса в Ruby

#ruby #net-http

#ruby #net-http

Вопрос:

В Ruby не представляется возможным ОТПРАВЛЯТЬ СООБЩЕНИЯ на URL-адрес, содержащий строку запроса, используя Net:HTTP. По крайней мере, в моих тестах он отбрасывается, и здесь есть 3-летняя дискуссия о том, как это не работает.

Итак, каков достойный способ сделать это? Я бы предпочел не добавлять зависимость от Mechanize или аналогичную, если есть более простой способ сделать это. И, учитывая, что должно быть возможно соответствовать спецификациям, а сегодня прошло 3 года, я надеюсь, что что-то изменилось.

Комментарии:

1. FWIW, cURL отлично справляется с этим, как и класс WebRequest в .NET.

2. Удалось ли вам обойти это?

Ответ №1:


rest-client — это небольшая оболочка поверх Net::HTTP: https://github.com/archiloque/rest-client

 RestClient.post('http://example.com/resource', {
  :param1 => 'one', 
  :nested => {:param2 => 'two'},
})
 

Комментарии:

1. Это все параметры post. То, что я хочу опубликовать, это ‘ example.com/resource ? foo=bar плюс параметры post. Похоже, что RestClient удаляет ‘foo= bar’ точно так же, как это делает Net::HTTP.

2. @Tome: Я вижу, вы хотите запрос post. Тогда rest-client, будучи оболочкой, бесполезен.

Ответ №2:

это должно сработать. Попробуйте это:

 RestClient.post 'http://example.com/resource?foo=bar', {:param1 => 'one'}
 

с помощью RestClient gem, указанного выше. Вы увидите: ‘bar’, в параметрах[:foo]