Как отправить данные формы JSON с помощью Mechanize или Faraday в Ruby

Я хочу получить данные с веб-сайта, который использует данные JSON для установки пользовательских параметров поиска, которые, по-видимому, запрашиваются через AJAX. Передаваемые данные отображаются в разделе XHR->Request Payload в Firebug:

{"filters": [{"action": "post", "filterName": "Hersteller", "ids": [269], 
"settingName": "Hersteller", "settingValue": "ValueA"}, 
{"action": "delete", "filterName": "Modelle", 
"settingName": "Modelle", "settingValue": ""}]}

Сайт не передает никаких параметров POST, а только данные в формате JSON для применения критериев поиска. Передача этих данных в качестве параметров публикации с помощью Mechanize не работает.

Как можно передать эти данные с помощью Mechanize или Faraday в Ruby on Rails?


person Severin    schedule 27.02.2014    source источник


Ответы (2)


С Mechanize вы будете делать:

agent.post url, data.to_json, {'Content-Type' => 'application/json'}
person pguardiario    schedule 27.02.2014

Я придумал способ сделать это:

connection = Faraday.new

fetched_page = connection.post do |request|
  request.url 'http://www.site.com'
  request.headers['Content-Type'] = 'application/json'
  request.body = '{"filters": [{"action": "post", "filterName": "Hersteller", "ids": [269], 
"settingName": "Hersteller", "settingValue": "ValueA"}, {"action": "delete", "filterName": "Modelle", "settingName": "Modelle", "settingValue": ""}]}'
end
person Severin    schedule 27.02.2014