GSOAP不会发送超过4个字节的响应

gSoap not sending more than 4 bytes of response

本文关键字:4个 字节 响应 GSOAP      更新时间:2023-10-16

i有以下代码发送响应,但是仅发送前4个字节。为什么行为是这样的?

int sendRaw(struct soap *soap, const char *respMsg)
{          
        if (soap_response(&objSoap, SOAP_FILE)) /* OK HTTP response header */
        { 
                soap_end_send(&objSoap);
                return soap->error;
        }
        for(int i = 0; i < sizeof(respMsg); i++)
        {
                if(soap_send_raw(&objSoap,&respMsg[i],1))
                {
                        return soap_end_send(&objSoap);
                }    
        }
        soap_end_send(&objSoap);
        return SOAP_OK;
}

我的呼唤就像这个

  const char  msg = "this is a rest response";      
  return sendRaw(&objSoap,msg); 

由于 respMsgchar *,它的大小等同于系统中的任何其他指针的大小,鉴于您的问题描述似乎是4个字节(32位):

>
    for(int i = 0; i < sizeof(respMsg); i++)

如果respMsg是字符串,则使用strlen(respMsg) [在您的小示例中是这种情况],如果是某种二进制数据,则需要沿实际尺寸传递。

sizeof(respMsg)

这是4,因为您的指针为32位,为4个字节。

你想要

strlen(respMsg)