Gsoap Http обратный вызов события

Я скачал gSoap и сгенерировал исходный код для wsdl. И я мог подключиться к серверу и отправить запрос.

Но я не могу понять, как я могу отловить события http, такие как отправленные байты, recv байтов.
Я прочитал этот документ http://www.cs.fsu.edu/~engelen/soapdoc2.html.

Но я не могу найти то, что мне нужно. Я нашел функцию fsend, Как я понимаю, эта функция выполняется, когда мы отправляем запрос на сервер. Должен ли я сделать что-то подобное?

service.fsend = Custom;

куда Custom мой обратный звонок?

Я нашел другой обратный вызов ffiltersend.
Насколько я понимаю, эта функция запускается при отправке запроса.
Я использую это.
Но я не понимаю, что последним параметром в этом методе является указатель на size_t.
Когда я получаю значение из этого указателя и делю на 2, я получаю счет моих реальных байтов. Зачем?

1

Решение

Чтобы получить статистику по количеству отправленных, полученных байтов и зарегистрировать входящие и исходящие сообщения в файловой системе, используйте «подключаемый модуль регистрации», который поставляется с программным обеспечением gSOAP.

Сначала зарегистрируйте плагин с помощью:

#include "plugin/logging.h" // this file is in the gSOAP distro path
...
soap_register_plugin(soap, logging);

Затем используйте эти функции, чтобы установить места регистрации для входящих и исходящих сообщений:

soap_set_logging_inbound(struct soap*, FILE*);
soap_set_logging_outbound(struct soap*, FILE*);

где дескриптор файла, переданный в качестве второго аргумента, указывает на открытый файл, который можно открывать и закрывать до и после регистрации. использование NULL в качестве второго аргумента отключить ведение журнала.

Чтобы получить статистику, т.е. количество байтов в размере сообщения, используйте:

soap_get_logging_stats(struct soap*, size_t *sent, size_t *recv);

где второй и третий аргументы будут обновлены этим вызовом.

Вот и все, что нужно.

Если вы хотите использовать свои собственные обратные вызовы для обработки сообщений, то, возможно, стоит начать с изучения plugin/logging.c файл о том, как это делается. Этот файл короткий.

0

Другие решения

Других решений пока нет …