Typhoeus позволяет передавать параметры HTTP с помощью рубин конструирует. Для получения URL, похожий на тот, в вашем посте, вы могли бы сделать что-то вдоль линий:
my_params = {
api_key: "XXXXXXXXXXXXXXXXXX",
objects: [
{ field1: 'My ObjectA2' },
{ field: 'ObjectB',
color: '1',
note: '98765' }],
ids: "foo, bar"
}
get_response = Typhoeus::Request.get("http://www.example.com/objects/add.php", params: my_params)
get_response.effective_url #> http://www.example.com/objects/add.php?api_key=XXXXXXXXXXXXXXXXXX&ids=foo%2C+bar&objects=%7B%3Afield1%3D%3E%22My+ObjectA2%22%7D&objects=%7B%3Afield%3D%3E%22ObjectB%22%2C+%3Acolor%3D%3E%221%22%2C+%3Anote%3D%3E%2298765%22%7D
Однако, поскольку ваш пример URL содержит объект JSON, кажется более вероятным, что API вы работа с поиском запроса POST.
post_response = Typhoeus::Request.post("http://www.example.com/objects/add.php", params: my_params)
post_response.effective_url #> http://www.example.com/objects/add.php
post_response.request.params #> {:api_key=>"XXXXXXXXXXXXXXXXXX", :objects=>[{:field1=>"My ObjectA2"}, {:field=>"ObjectB", :color=>"1", :note=>"98765"}], :ids=>"foo, bar"}
EDIT:
В том случае, если API который ожидает запрос GET, в настоящее время наиболее распространенным способом, чтобы передать сериализованные данные через запросы GET, чтобы добавить квадратные скобки в конце имен параметров :
http://www.example.com/objects/add.php?objects[]=something&objects[]=something%20else
Однако Typhoeus по умолчанию не добавляет скобки. Существует некоторая дискуссия on the Typhoeus mailing list, в которой обосновывается это решение. К счастью, вы можете легко добавить скобки самостоятельно:
my_params = {
api_key: "XXXXXXXXXXXXXXXXXX",
:"objects[]" => [
{ field1: 'My ObjectA2' },
{ field: 'ObjectB',
color: '1',
note: '98765' }],
ids: "foo, bar"
}
get_response = Typhoeus::Request.get("http://www.example.com/objects/add.php", params: my_params)
get_response.effective_url #> http://www.example.com/objects/add.php?api_key=XXXXXXXXXXXXXXXXXX&ids=foo%2C+bar&objects%5B%5D=%7B%3Afield1%3D%3E%22My+ObjectA2%22%7D&objects%5B%5D=%7B%3Afield%3D%3E%22ObjectB%22%2C+%3Acolor%3D%3E%221%22%2C+%3Anote%3D%3E%2298765%22%7D
Да, это поможет фактический код. Кроме того, проверьте журналы своего веб-сервера, чтобы точно узнать, что ваш запрос был переведен в оба экземпляра (Chrome против Ruby). – theglauber
@Krule: Что делает его недействительным? –