Размещать вложенные параметры (хэш) с помощью HTTPClient - PullRequest
3 голосов
/ 17 августа 2010

Мне нужно было иметь многочастную HTTP-запись от одного приложения к другому, которая включала бы вложение файла и вложенный хэш параметров.Я попытался использовать HTTPClient, который работал для вложения файла, однако я не смог получить параметры для отправки во вложенном формате.


data_params = Hash.new
data_params[:params] = Hash.new
data_params[:params][:f] = Hash.new
data_params[:params][:d] = Hash.new
data_params[:params][:d][:name] = "Mich"
data_params[:params][:d][:city] = "Ostin"
data_params[:params][:f][:event] = "Sundance"

http_client = HTTPClient.new
body = data_params[:params]
response = http_client.post('http://localhost:3030/receiver/receive_test_data/', body)

с приложением получателя, в котором параметры отображаются как {"d"=>"nameMichcityOstin","f"=>"eventSundance"} (с хешсворачивается в строки на уровне вложенности)

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

Ответы [ 2 ]

4 голосов
/ 03 марта 2011

При использовании Rails:

> {:a=>53,:b=>{:c=>7}}.to_query 
=> "a=53&b[c]=7" 

http://apidock.com/rails/ActiveSupport/CoreExtensions/Hash/to_query

0 голосов
/ 17 августа 2010

Я не уверен, какую библиотеку HTTPClient вы используете, поэтому я не смог попробовать это, но что, если вы используете такие ключи

data_params[:params]['d[name]'] = "Mich"
data_params[:params]['d[city]'] = "Ostin"

т.е. data_params[:params] - это хэш только одного уровня.

и затем получающее приложение распакует это во вложенный хеш, который вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...