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

时间:2015-05-16 09:21:43

标签: c++ linux rest gsoap

我有以下代码用于发送响应,但只有前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); 

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

sizeof(respMsg)

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

你想要

strlen(respMsg)