Использование gsoap Я сгенерировал серверные коды C ++.
Используя SoapUI, я отправляю сообщение на сервер и получаю ответ. Пока здесь все хорошо.
Я хотел добавить больше тегов в ответ. Для этого я манипулировал серверными кодами. Первоначально код, сгенерированный gsoap, который производит ответ:
if (soap_end_count(soap)
|| soap_response(soap, SOAP_OK)
|| soap_envelope_begin_out(soap)
|| soap_putheader(soap)
|| soap_body_begin_out(soap)
|| tempuri__IsAliveResponse.soap_put(soap, "tempuri:IsAliveResponse", "")
|| soap_body_end_out(soap)
|| soap_envelope_end_out(soap)
|| soap_end_send(soap))
return soap->error;
Это дает мне ответ ниже:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:tempuri="http://tempuri.org/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<tempuri:IsAliveResponse/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Но когда я хочу добавить еще один тег в ответ:
if (soap_end_count(soap)
|| soap_response(soap, SOAP_OK)
|| soap_envelope_begin_out(soap)
|| soap_putheader(soap)
|| soap_body_begin_out(soap)
|| tempuri__IsAliveResponse.soap_put(soap, "tempuri:IsAliveResponse", "")
|| tempuri__IsAliveResponse.soap_put(soap, "newTag", "")
|| soap_body_end_out(soap)
|| soap_envelope_end_out(soap)
|| soap_end_send(soap))
return soap->error;
Тогда я получаю частичный ответ:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:tempuri="http://tempuri.org/">
<SOAP-ENV:Header></SOAP-ENV:Header>
<SOAP-ENV:Body>
<tempuri:IsAliveResponse></tempuri:IsAliveResponse>
<newTag></newTag>
</SOAP-ENV:Body>
</
Затем я обнаружил, что Content-Length: всегда 524 . Более того, каждый добавленный мной символ считается 2 .
Я не вижу, где определяется эта фиксированная длина 524. Это происходит от размера буфера? Если да, то как я могу сгенерировать код с большим размером буфера?
Как я могу добавить больше данных об ответе в коде мыльного сервера C ++, сгенерированном gsoap?