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

gSoap not sending more than 4 bytes of response

我有以下发送响应的代码,但响应中只发送了前 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); 
sizeof(respMsg)

这是4,因为你的指针是32bit的,也就是4个字节

你想要

strlen(respMsg)

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

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

如果respMsg是一个字符串,那么使用strlen(respMsg)[你的小例子就是这种情况],如果它是某种二进制数据,那么你需要传递实际尺寸。