2014-09-01 1 views
0

Я пытаюсь реплицировать следующий запрос на завивки, используя Httparty, без успеха. Мне было интересно, как лучше всего построить вложенный json с httparty. Любые примеры запросов гнезда, которые я видел, не помогли. Я получаю ошибку 500 от API, к которому я пытаюсь получить доступ. Любая помощь приветствуетсяПостроение запроса json в 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" 
      } 
     ] 
    } 
}' 

Это то, что сокращенный вариант мой запрос HTTParty выглядит,

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' } } 
) 

и запрос как так

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

Раньше я использовал httparty раньше, но не со структурой, которая содержит гнездо с []. Вот что меня смущает

+0

Добро пожаловать на SO. Не могли бы вы показать нам, что вы пробовали до сих пор? – jbh

+0

Я обновил вопрос, если это поможет –

+0

Вы назовете 'to_json' на теле? я не думаю, что httparty знает, что это нужно сделать –

ответ

0

Я никогда не смог бы получить эту структуру, реплицированную с помощью HTTParty, чего раньше никогда не было. Я закончил тем, что мне пришлось использовать curb и бегущую строку json

0

Ваш друг отличается.

Ваш локон пример делает

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

т.е. значения для ключа "имя" представляет собой массив, содержащий один объект (с ключевым значением)

Ваш код HTTParty имеет

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

поэтому значение для ключа «имя» больше не является массивом

В соответствии с правилами ori например, это должно быть

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

Я прошел множество попыток на этом, ни один из которых не работает. Вышеприведенный пример - один. Не могли бы вы рассказать мне, как представить пример скручивания с помощью httparty? –

+0

Я добавил пример. Вы также отправляете разные данные (например, ваша версия httparty не имеет компании) - если эти данные были обязательными, это может быть проблемой –

+0

Да, я сократил ее для краткости. Единственное обязательное поле - электронная почта. Я обновил вопрос и детали запроса, чтобы теперь принять во внимание вашу точку. Однако я все равно получаю такую ​​же ошибку 500 –