регистрация пользователя с помощью HTTParty

У меня есть дерьмовый API, который возвращает сломанный JSON после запроса GET с HTTParty.

ПОЛУЧИТЬ HTTParty.get('url/login/success/', headers: {cookie: "JSESSIONID=ID"}) возвращает JSON::ParserError (765: unexpected token at)

и ответ.тело

"{\"head\":{\"apikey\":null,\"sessionid\":\"ID\",\"timestamp\":1551772335837,\"sessiontimeout\":1551775035837,\"wishlistItemsCount\":0,\"basketItemsCount\":0,\"loggedIn\":true,\"role\":\"C\"},\"data\":{\"user\":{\"profile\":{\"title\":\"Title\",\"firstname\":\"Name\",\"lastname\":\"Lastname\",\"street\":\"Street\",\"street2\":\"number\",\"postalcode\":\"code\",\"city\":\"City\",\"customerID\":\"ID\",\"customerType\":xx}},\"abandonedBasket\":false},\"messages\":[{\"code\":\"url.api.login.success\",\"statusCode\":200,\"description\":\"OK\"}]}{\"head\":{\"apikey\":null,\"sessionid\":\"ID\",\"timestamp\":1551772335841,\"sessiontimeout\":1551775035841,\"wishlistItemsCount\":0,\"basketItemsCount\":0,\"loggedIn\":true,\"role\":\"C\"},\"data\":{},\"messages\":[{\"code\":\"url.api.general.error\",\"statusCode\":500,\"description\":\"Es ist ein interner Fehler aufgetreten. Bitte versuchen sie es später noch einmal.\"}]}"

Есть ли возможность исправить JSON ответа, чтобы пользователь мог войти в систему и нормально использовать свою учетную запись?

У меня есть альтернатива использовать curl внутри кода, но я хочу этого избежать


person Dende    schedule 05.03.2019    source источник
comment
То есть у вас нет контроля над самим API? Если это так, то я бы сообщил об ошибке тому, кто это сделал, так как это явно недопустимо JSON. Во-вторых, как узнать, какой ответ правильный. Это действительно или ошибка?   -  person engineersmnky    schedule 06.03.2019
comment
Правильно, никакого контроля над API. Я предполагаю, что действительный ответ правильный, поскольку тот же запрос с завитком возвращает действительный ответ.   -  person Dende    schedule 06.03.2019


Ответы (1)


Вероятно, вы не отправляете данные JSON.

Проверьте это Изменение Content-Type на JSON с помощью HTTParty

  1. Тип содержимого
  2. to_json
person Igor Kasyanchuk    schedule 05.03.2019
comment
Я отправляю JSON. Тело ответа каким-то образом состоит из двух частей с искаженным JSON. - person Dende; 05.03.2019
comment
1) вы указываете тип контента? 2) попробуйте сохранить ответ в файл json и проверить его онлайн. 3) попробуйте сравнить все заголовки (вывести отладочную информацию из httparty в консоль) и то же самое с curl и проверить разницу - person Igor Kasyanchuk; 05.03.2019