Название: xml-rpc Отправлено: demaker от Май 19, 2022, 15:54 Всем, доброго дня!!!
Подскажите кто-нибудь работал с xml-rpc? Не могу понять запрос и ответ на запрос передаются между клиент-сервером xml- файлами? Заранее прошу простить если спросил глупость. Название: Re: xml-rpc Отправлено: kambala от Май 19, 2022, 23:02 тело запроса должно быть хмл документом с некоторой стандартизованной структурой, я так понимаю (по аналогии с JSON-RPC)
Название: Re: xml-rpc Отправлено: demaker от Май 20, 2022, 08:16 Т.е получается со стороны клиента и со стороны сервера должен быть xml парсер, который из документа будет вынимать нужную инфу?
Название: Re: xml-rpc Отправлено: kambala от Май 20, 2022, 09:48 все верно.
если одна сторона только отправляет запросы, а другая только принимает, то на отправляющей стороне в принципе можно формировать хмл документ ручками (если, например, для отправляющей стороны надо тащить отдельную библиотеку для обработки хмл). Название: Re: xml-rpc Отправлено: demaker от Май 20, 2022, 10:48 все верно. если одна сторона только отправляет запросы, а другая только принимает, то на отправляющей стороне в принципе можно формировать хмл документ ручками (если, например, для отправляющей стороны надо тащить отдельную библиотеку для обработки хмл). Мне нужно используя QTcpSocket сделать две прилажухи : клиент и сервер)) Со стороны клиента вводится два цифровых значения и операция которая производится: сложить, умножить, вычесть, разделить. Все это посылается на сервер и сервер выдает результат. Все это нужно сделать при помощи xml-rpc. Я так понимаю что клиент формиует xml документ и передает файл по сити, сервер соответственно принимает его, парсит и выполняет нужную операцию с переданными данными. Правильно я понимаю? Название: Re: xml-rpc Отправлено: RedDog от Май 20, 2022, 11:13 https://www.genivia.com/dev.html
Название: Re: xml-rpc Отправлено: kambala от Май 20, 2022, 13:49 а сокет обязательно, обычным QNAM не обойтись? :) по стандарту xml-rpc использует http транспорт, тебе придется формировать структуру запроса самому.
1) клиент формирует хмл с нужными данными и отправляет по сети 2) сервер парсит хмл, выполняет свою логику, отправляет хмл с результатом клиенту 3) клиент парсит хмл-результат Название: Re: xml-rpc Отправлено: demaker от Май 20, 2022, 16:12 а сокет обязательно, обычным QNAM не обойтись? :) по стандарту xml-rpc использует http транспорт, тебе придется формировать структуру запроса самому. 1) клиент формирует хмл с нужными данными и отправляет по сети 2) сервер парсит хмл, выполняет свою логику, отправляет хмл с результатом клиенту 3) клиент парсит хмл-результат Да мне нужен QTcpSocket Клиент и сервер я пишу сам на базе QTcpSocket А что значит формировать структуру запроса самому, можно поподробнее для особоодаренных... Я думал формируем xml-файл, отправляем(soket.write(...)), принимаем (socket.read(...)), парсим xml -файл Или я не прав??? Название: Re: xml-rpc Отправлено: kambala от Май 20, 2022, 16:48 гуглить не пробовал? хотя бы почитать что такое xml-rpc прежде, чем тут спрашивать :)
если у тебя какое-то самопальное приложение, то можешь конечно тупо писать XML в сокет. но если ты хочешь следовать стандарту xml-rpc, то надо отправлять полноценный http запрос. Название: Re: xml-rpc Отправлено: demaker от Май 24, 2022, 11:20 гуглить не пробовал? хотя бы почитать что такое xml-rpc прежде, чем тут спрашивать :) если у тебя какое-то самопальное приложение, то можешь конечно тупо писать XML в сокет. но если ты хочешь следовать стандарту xml-rpc, то надо отправлять полноценный http запрос. Приложение да самопальное))) Пробовал))) Я просто так до конца и не понял :-\ ;D Хотелось уточнить Голова HTTP сообщения состоит из стартовой строки вместе с заголовками(start line + headers) Код: POST / HTTP/1.1 <--------------start line POST, GET, PUT - методы и т.д описывают требуемое действие По какому принципу заполнять заголовочные файлы(http headers)? Нужно ли их все заполнять или достаочно только заполнить start line? Или можно примерно сделать так (примерный код ниже)? Код
Название: Re: xml-rpc Отправлено: kambala от Май 24, 2022, 11:53 хедеры нужны для сервера, почитай в документации http какие являются обязательными или найди пример кода. но лучше на клиенте используй QNAM для отправки запроса, а на сервере можешь принимать данные в голом сокете, раз так хочется: там банально поиском по строке найдешь начало хмл документа.
Название: Re: xml-rpc Отправлено: demaker от Май 24, 2022, 17:12 хедеры нужны для сервера, почитай в документации http какие являются обязательными или найди пример кода. но лучше на клиенте используй QNAM для отправки запроса, а на сервере можешь принимать данные в голом сокете, раз так хочется: там банально поиском по строке найдешь начало хмл документа. По докумуентации ,да посмтрю в RFC2616... И еще такой момент))) Так как работаем с tcpsocket, то нужно разделять сообщения для этого используем соответственно разделитель (const unsigned int Delimetr = 0xABCCCCBA) Плюс для проверки корректности высылается его размер в поле size. Код
Хотелось уточнить, считается ли это нормальной практикой и можно ли так делать как в вышеприведенном коде? |