HTTPS: 400 Неверный запрос! Неверный JSON

Я пытаюсь передать запрос метода POST для определенного URI, используя драгоценный камень Restclient. Однако я постоянно получаю 400 Bad request с сервера. Я пробовал множество способов публикации данных с изменениями. PFB текущий

require 'minitest'
require 'rest-client'
require 'json'
require 'pry'
require 'uri/https'


#class APITest < Minitest::Test
def setup
  response = RestClient.post("", {'userType' => 'nonsso', 'firstName' => 'Justin9', 'isDependentMajor' => true, 'email' => '[email protected]', 'dependentName'=> 'Cobb', 'dependentLastName' => 'Cobb', 'lastName' => 'Justin'
  }, { "Content-Type" => 'application/json'})
  puts response
end



setup

Я затрудняюсь понять, что мне здесь не хватает. Я попытался использовать тот же код для другого API с методом get, только с headers, и он работает.

Пожалуйста, дайте мне знать, какой-либо плохой синтаксис в json, который я использую для метода POST.


person Emjey    schedule 12.06.2017    source источник


Ответы (1)


 response = RestClient.post("", {'userType' => 'nonsso', 'firstName' => 'Justin9', 'isDependentMajor' => true, 'email' => '[email protected]', 'dependentName'=> 'Cobb', 'dependentLastName' => 'Cobb', 'lastName' => 'Justin'
  }.to_json, { "Content-Type" => 'application/json'})

Обратите внимание на to_json.

RestClient сериализует полезную нагрузку в application/x-www-form-urlencoded по умолчанию. Вы должны вручную сериализовать свои пост-данные.

person Aetherus    schedule 12.06.2017
comment
Я пытался добавить to_json ранее, но это не сработало. Все еще плохой запрос и неверный JSON :( - person Emjey; 12.06.2017
comment
С вашим текущим кодом я также получаю то же самое. Я попытался перепроверить с помощью инструмента post man, и там работает тот же URL-адрес с параметрами. - person Emjey; 12.06.2017
comment
Работает! Думаю, я оставлял пробелы между данными здесь. Я попытался удалить эти пробелы, и теперь это работает. :) - person Emjey; 12.06.2017
comment
Теперь я чувствую себя тупицей, потому что потратил впустую целую пятницу только потому, что не ставил пробелы между данными. Блин! - person Emjey; 12.06.2017
comment
Странный. Пространства не должны быть проблемой. - person Aetherus; 12.06.2017
comment
Истинный! Мне нужна еще одна помощь, есть ли способ повторить post в случае сбоя в первый раз? как я могу дать if else?. until response.body.include? "200" retry? В принципе, я хочу, чтобы этот код трижды пытался опубликовать, и если все равно не получается, puts не работает API. - person Emjey; 12.06.2017