Post params imbriquées (hachage) à l'aide HTTPClient

voix
3

Il me fallait un avoir un poste multipart http d'une application à une autre qui comprenait une pièce jointe de fichier et un hachage params imbriqué. J'ai essayé avec HTTPClientqui a travaillé pour le fichier joint, mais je ne pouvais pas params d'envoyer dans un format imbriqué.


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)

avec l'application de récepteur voir les params comme {d=>nameMichcityOstin,f=>eventSundance}(avec le hachage effondré en chaînes sur le niveau imbriqué)

Je me demande si cela est une limitation sur les postes http ou que je fais tout simplement quelque chose de mal. J'ai travaillé avec JSON avant, que je connais supporte une structure imbriquée, mais je ne sais pas comment ajouter des pièces jointes. Je vous remercie des suggestions ou des méthodes alternatives qui seraient conformes aux « meilleures pratiques » de faire quelque chose comme ça.

Créé 17/08/2010 à 16:44
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
3

Si vous utilisez Rails:

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

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

Créé 03/03/2011 à 16:28
source utilisateur

voix
0

Je ne suis pas sûr de HTTPClientbibliothèque que vous utilisez donc je ne l' ai pas pu essayer, mais si vous utilisez les touches comme celui - ci

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

à- dire data_params[:params]est juste un hachage de niveau.

puis l'application va recevoir déballer ce dans le hachage imbriquée que vous attendez.

Créé 17/08/2010 à 18:33
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more