请教 gsoap传出字符串的诡异问题

SmartMZ 2012-12-26 06:21:45
用c写的获取cpu信息,之后通过gsoap 2.8发布web服务。web服务返回的是cpu的信息,是一个符合json结构的字符串。


程序在32位Linux上编译运行无问题,Redhat 64位上编译无问题,但json字符串返回来的是乱码。
重新编译了gsoap,生成wsdl,都不行。
之后跟踪程序:
在soap结构中自己加了一个成员 char **ns_cpu;存放我想返回的json串。
使用这个在程序中各种 printf *soap->ns_cpu,
发现Stdsoap2.c中的这段出现问题:

  if (soap_pointer_lookup(soap, p, t, &pp))
//在soap_pointer_lookup函数中return之前添加
//printf("lookup_in:%s %d\n",*soap->ns_cpu,strlen(*soap->ns_cpu));返回的字符串无问题
//soap_pointer_lookup函数返回0,直接跳转到else if
{
if (pp->mark1 == 0)
{ pp->mark1 = 2;
pp->mark2 = 2;
}
}
else if (soap_pointer_enter(soap, p, NULL, 0, t, &pp))
//在enter_in 函数中最开始的位置添加
//printf("jsonStr2:%s %d\n",*soap->ns_cpu,strlen(*soap->ns_cpu));返回的字符串出现问题
{
pp->mark1 = 0;
pp->mark2 = 0;
}
else
return 1;




输出为:

lookup_in: [{CPUType:"Intel(R) Xeon(R) CPU E5620 @ 2.40GHz",Processors:2,CPUCores:4,CoreThreads:8,AppTasks:405,TasksThreads:513,CpuSpeed:"2400.00 MHz",CpuSpeed:"2400.00 MHz",ThreadUsage:["0.00%","0.00%","0.00%","0.00%","0.00%","0.00%","0.00%","0.00%"],AverageUsage:"0.00%"}] 274


enter_in: [{CPUType:"Intel(R) Xeon(R) CPU E5620 @ 2.40GHz",Processors:2,CPUCores:4,CoreThreads:8,AppTasks:405,TasksThreads:513,CpuSpeed:"2400.00 MHz",CpuSpeed:"2400.00 MHz",ThreadUsage:["0.00%","0.00%","0.00%","0.00%","0.00%","0.00%","0.00%","0.00%"],AverageUsage:"0.00%"74

第一段是正确的,但紧挨着第二段就出错了。。。实在找不到原因了。。。。太诡异了……
...全文
277 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
银云风 2013-03-30
  • 打赏
  • 举报
回复
你好,我最近也需要用jsoap实现web service传出json,能看一下您的源码或者您有总结什么文档之类的吗,万分感谢

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧