2014-09-01 2 views
0

Je suis en train de reproduire la demande boucle suivante à l'aide Httparty sans succès. Je me demandais comment mieux construire le json imbriqué avec httparty. Tous les exemples de requêtes de nid que j'ai vus n'ont servi à rien. Je reçois une erreur 500 de l'API à laquelle j'essaye d'accéder. Toute aide appréciéeConstruire une demande JSON dans httparty

curl https://api.relateiq.com/v2/contacts 
-X POST 
-u [API Key]:[API Secret] 
-H 'Content-Type: application/json' 
-H 'Accept: application/json' 
-d '{ 
    "properties" : { 
     "name" : [ 
      { 
       "value" : "James McSales" 
      } 
     ], 
     "email" : [ 
      { 
       "value" : "[email protected]" 
      }, 
      { 
       "value" : "[email protected]" 
      } 
     ], 
     "phone" : [ 
      { 
       "value" : "(888) 555-1234" 
      }, 
      { 
       "value" : "(888) 555-0000" 
      } 
     ], 
     "address": [ 
      { 
       "value": "123 Main St, USA" 
      } 
     ], 
     "company": [ 
      { 
       "value": "RelateIQ" 
      } 
     ], 
     "title": [ 
      { 
       "value": "Noob" 
      } 
     ] 
    } 
}' 

C'est ce qu'une version abrégée de ma demande httparty ressemble,

HTTParty.post(
    "https://api.relateiq.com/v2/contacts", 
:body => { 
     :properties => { 
    :name => [{:value => "Falcao Test"}], 
    :email => [{:value => "[email protected]"}] 
    } 
    }, 
    :basic_auth => auth, 
:options => { :headers => { 'Content-Type' => 'application/json' } } 
) 

et la demande est comme si

https://api.relateiq.com/v2 /> contacts, @options = {: limit => 5,: assume_utf16_is_big_endian => true,: default_params => {},: follow_redirects => true,: parser => HTTParty :: parser,: connection_adapter => HTTParty :: ConnectionAdapter ,: body => {: properties => {: name => [{: value => "Test Falcao"}],: email => [{: value => "[email protected]"}}}}}, : basic_auth => {: nom d'utilisateur => "5400a0b7e4b052e888539fb7",: mot de passe => "WNyLKfLZ9wK1hEyY6249VQKQ4zS"},: options => {: headers => { "Content-Type" => "application/json"}}}, @ last_uri = # https: // api.relateiq.com/v2/contacts>, @ raw_request = #, @last_response = #>

J'ai utilisé httparty auparavant mais pas avec une structure qui contient l'imbrication avec [] auparavant. C'est ce qui me confond

+0

Bienvenue sur le SO. Pourriez-vous nous montrer ce que vous avez essayé jusqu'ici? – jbh

+0

J'ai mis à jour la question si cela aide –

+0

Avez-vous appelé 'to_json' sur le corps? Je ne pense pas que httparty sait qu'il doit faire cela –

Répondre

0

Je ne pourrais jamais obtenir cette structure répliquée avec HTTParty, cela ne s'est jamais produit auparavant. J'ai fini par avoir à utiliser trottoir et une chaîne JSON échappé

0

Votre JSON est différent.

Votre exemple CURL ne

"name" : [ 
     { 
      "value" : "James McSales" 
     } 
    ], 

-à-dire la valeur du "nom" clé est un tableau contenant un objet (avec la clé)

Votre code httparty a

:name => {:value => "Falcao Test"} 

de sorte que la valeur du « nom » clé est pas un tableau plus

pour correspondre à la ori exemple ginal il devrait être

:name => [{:value => "Falcao Test}] 
+0

J'ai traversé de nombreuses tentatives à ce sujet qui ne fonctionnent pas. L'exemple ci-dessus est juste un. Pourriez-vous me dire comment représenter l'exemple the curl en utilisant httparty? –

+0

J'ai ajouté un exemple. Vous soumettez également des données différentes (par exemple, votre version de httparty n'a pas de société) - si ces données étaient obligatoires, cela pourrait être un problème. –

+0

Oui, je l'ai raccourci par souci de concision. Le seul champ obligatoire est le courrier électronique. J'ai mis à jour la question et demande des détails pour prendre maintenant en compte votre point. Cependant, je reçois toujours la même erreur 500 –