Форум программистов, компьютерный форум, киберфорум
REST API
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
4 / 4 / 0
Регистрация: 19.07.2015
Сообщений: 96

Получение и обработка JSON DataSnap Rest Server

02.01.2018, 11:58. Показов 6549. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, как я могу получить JSON строку, которую я передаю с клиента следующим образом:

Delphi
1
2
3
4
  e_content.Text := '{"a":"2"}';
  RESTRequest1.Body.Add(trim(e_content.Text),TRESTContentType.ctAPPLICATION_JSON);
  RESTRequest1.Method := rmGet;
  RESTRequest1.Execute();
На сервере мне нужно получить строку:
{"a":"2"}

Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.01.2018, 11:58
Ответы с готовыми решениями:

REST Сервер DATASNAP
Добрый день. Подскажите пожалуйста, как у datasnap REST сервер установить Connection: Keep-alive ? По умолчанию соединение закрывается...

Серверное приложение. На чем лучше? idHTTP, DataSnap / REST?
Всем привет. Планируется высоко нагруженное приложение. Кроме простых задач потребуется загрузка файлов. Много и больших. К нему нужно...

Передача Stream:TStream Клиенту через DataSnap Server
Здравствуйте уважаемые. Столкнулся с проблемой . При запросе клиента к серверу. Выходит такая ошибка. Код Сервера прилагаю

7
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
02.01.2018, 12:13
Лучший ответ Сообщение было отмечено Joey как решение

Решение

метод Get это значит все данные передаются через строку URL
куда там пихать ваш JSON ?
передавайте post

потом, если вы через Datasnap передаете, то у вас будет просто метод, аналогичный методу сервера, и всякие RESTClient не нужны
1
4 / 4 / 0
Регистрация: 19.07.2015
Сообщений: 96
02.01.2018, 12:35  [ТС]
krapotkin, Спасибо.

Допустим, у меня есть функция на сервере:

Delphi
1
function ReturnRequest(): TJSONObject;
При выполнении запроса методом Post, вызывается функция с префиксом "update" :

Delphi
1
function updateReturnRequest(): TJSONObject;
Так вот. Чтобы добраться до параметров запроса, использую метод GetInvocationMetadata
Чтобы получить передаваемый JSON в теле запроса: GetDataSnapWebModule.Request.ContentFiel ds.Text

Все ли верно ?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
02.01.2018, 14:27
у меня так:
сервер
Delphi
1
function SomeFunction(param1,param2:integer):string;
клиент
Delphi
1
2
3
function SomeFunction(param1,param2:integer):string;
 
json := TJsonObject.Parse(SomeFunction(12,34));
0
4 / 4 / 0
Регистрация: 19.07.2015
Сообщений: 96
02.01.2018, 17:02  [ТС]
krapotkin, а если клиенты будет написан на PHP ? Клиент ведь должен отправить на сервер данные в формате JSON. Как это произойдет у Вас ?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
02.01.2018, 17:34
в существующей программе у меня все просто
если взять основное:
Delphi
1
2
3
4
5
h:=THttpClient.Create(NIL);
st:=TStringStream.Create();
res:=TStringStream.Create();
resp:=h.post(URL, st, res);
x:=TSuperObject.Create(st.datastream);
и сервер там на PHP

Добавлено через 5 минут
опс. если наоборот, клиент на PHP
тогда тем более, никаких JSON в природе не существует. это же просто строка
вызов сервера Datasnap из php это curl я так понимаю
но если это REST то какая разница.
у вас есть URL и у вас есть переданные параметры. причем в POST
0
4 / 4 / 0
Регистрация: 19.07.2015
Сообщений: 96
02.01.2018, 20:08  [ТС]
krapotkin,
Это REST.
Задача стояла в "теле" запроса передать JSON (строку).
В принципе, моя ошибка была в том, что я методом GET передавал эту строку. Поэтому, благодаря Вашему первому сообщению, задача решена.

Теперь другой вопрос встает: при вызове функции методом POST, делфи автоматически присваивает ей префикс update.
Получается, что вызывается уже другая функция.
На сколько это удобно, я еще не понял.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
02.01.2018, 23:20
ну, просто в rest считается что GET это запрос данных POST - update
есть еще PATCH и DELETE
так что все c одной стороны норм
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.01.2018, 23:20
Помогаю со студенческими работами здесь

Spring, REST, Json
Добрый день, Возникает следующая ошибка: HTTP Status 415 - description The server refused this request because the request...

Spring, Rest, Json, LocalData
REST method POST вот такой json мапитса и все ок { "mark":false, "surname":"test", "name":"test", ...

Java+Rest API + JSON
Добрый вечер. Прошу вас указать с чего начать, совсем запутался. Хочу написать контроллеры, которые принимают/возвращают JSON. Пусть...

Получение данных с REST 1C
Добрый день. Стал разбираться с получением данных из 1С через REST сервис и возникла такая проблема. При запросе к одинаковым базам(одна...

Spring REST, Hibernate. Сложности десериализации JSON при one-to-many
Всем добрый день. Возникла проблема, подходящее решение которой никак не нагуглю. Делаю REST API на Spring и Hibernate. При попытке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru