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)
[你的小例子就是这种情况],如果它是某种二进制数据,那么你需要传递实际尺寸。
我有以下发送响应的代码,但响应中只发送了前 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)
[你的小例子就是这种情况],如果它是某种二进制数据,那么你需要传递实际尺寸。