Страница 1 из 1

REST API https, как отправить сообщение?

СообщениеДобавлено: Чт июн 27, 2019 11:38 am
Oper99
Пытаюсь отправить сообщение через рест апи.
Веб сервер работает по https

команда
{"cmd":"0002","UserFrom":"0,"UserTo":"491","Msg":"Hellomsg","APIStype":"mydata","ServerKey":"iddqd"}

строка вызова
https://mysite/API/?data=%7B%22cmd%22%3 ... ddqd%22%7D

получаю ответ:
Access denied. Can't convert data to object

В чем может быть загвоздка ? Куда смотреть?

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 12:44 pm
Андрей Раков
Добрый день.

Проверяйте, когда вставляете ссылки, а то домен ххх.ххх ведет на очень неприличный сайт :)

А насчет вашей ошибки, я попробовал декодировать вашу строку и вот что получилось:
Код: Выделить всё
decodeURI('%7B%22cmd%22%3A%220002%22%2C%22UserFrom%22%3A%220%2C%22UserTo%22%3A%22491%22%2C%22Msg%22%3A%22Hellomsg%22%2C%22APIStype%22%3A%22mydata%22%2C%22ServerKey%22%3A%22iddqd%22%7D')

> {"cmd"%3A"0002"%2C"UserFrom"%3A"0%2C"UserTo"%3A"491"%2C"Msg"%3A"Hellomsg"%2C"APIStype"%3A"mydata"%2C"ServerKey"%3A"iddqd"}

Такое чувство, что вы ее 2 раза закодировали, как вы генерировали эту строку?

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 12:58 pm
Oper99
делал тут
https://www.url-encode-decode.com/
сделал еще раз, получил -

Код: Выделить всё
%7B%22cmd%22%3A%220002%22%2C%22UserFrom%22%3A%220%2C%22UserTo%22%3A%22491%22%2C%22Msg%22%3A%22Hellomsg%22%2C%22APIStype%22%3A%22mydata%22%2C%22ServerKey%22%3A%22iddqd%22%7D%0D%0A


но ответ от сервера это не изменило.

Код: Выделить всё
https://mysite/API/?data=%7B%22cmd%22%3A%220002%22%2C%22UserFrom%22%3A%220%2C%22UserTo%22%3A%22491%22%2C%22Msg%22%3A%22Hellomsg%22%2C%22APIStype%22%3A%22mydata%22%2C%22ServerKey%22%3A%22iddqd%22%7D%0D%0A


выдает

Access denied. Can't convert data to object

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 1:04 pm
Андрей Раков
Этот сервис работает неправильно и он вам не нужен.

Зайдите в браузере в "инструменты разработчика" (комбинация CTRL+SHIFT+I или F12 ), там перейдите в консоль и с помощью команды encodeURI конвертируйте строку:

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 1:47 pm
Oper99
Код: Выделить всё
encodeURI('{"cmd":"0002","UserFrom":"0,"UserTo":"491","Msg":"Hellomsg","APIStype":"mydata","ServerKey":"iddqd"}')
"%7B%22cmd%22:%220002%22,%22UserFrom%22:%220,%22UserTo%22:%22491%22,%22Msg%22:%22Hellomsg%22,%22APIStype%22:%22mydata%22,%22ServerKey%22:%22iddqd%22%7D"

https://mysite/API/?data=%7B%22cmd%22:%220002%22,%22UserFrom%22:%220,%22UserTo%22:%22491%22,%22Msg%22:%22Hellomsg%22,%22APIStype%22:%22mydata%22,%22ServerKey%22:%22iddqd%22%7D


тот же ответ :-(

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 2:05 pm
Андрей Раков
У вас неправильный JSON, там есть ошибка:
"UserFrom": "0 ,"UserTo":"491"

0 - нужно взять в кавычки с двух сторон или вообще не добавлять кавычки для чисел.

Сервис для просмотра JSON: http://jsonviewer.stack.hu/

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 2:10 pm
Oper99
добавил кавычки

https://mysite/API/?data=%7B%22cmd%22:% ... ddqd%22%7D


ответ - без изменений

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 2:13 pm
Андрей Раков
Если исправить ошибку — все работает.

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 2:16 pm
Oper99
Спасибо, сработало. Только через GET, Через POST все равно ошибка. Но задача решена.

Re: REST API https

СообщениеДобавлено: Чт июн 27, 2019 2:18 pm
Андрей Раков
Если работает через GET, значит вам нужно искать ошибку в реализации POST.