VC6.0+gSOAP单步调试input1没值,求救

山书生 2010-06-24 07:37:45

int SendParamter( char *saleOrder)
{
ns2__MBFRequestHeader header; //定义 header
ns3__ivrQueryDeliveryinfosaleOrderNo saleOrderNo; //
ns3__ivrQueryDeliveryinfoRequestBody body; //定义 body
ns3__ivrQueryDeliveryinfoRequest request; //定义 request

ns3__ivrQueryDeliveryinfodeliveryInfo deliveryInfo; //定义 serviceInfo SOA返回详细信息
ns3__ivrQueryDeliveryinfoResponse response; //定义 response

_ns3__ivrQueryDeliveryinfo soapinput; //定义 soap输入信息
_ns3__ivrQueryDeliveryinfoResponse soapoutput; //定义 soap输出信息

//初始化soap
struct soap soap;
soap_init ( &soap );

const char* server = "http://192.168.1.53:9996/ServiceWeb/mb"; //服务器URL

//给输入变量赋值
header.MBServiceCode = "MBF_IVR_QUERY_DELIVERYINFO"; //-0-
//saleOrderNo = **body.saleOrderNo;
char *low = new char[256];
saleOrderNo.low = saleOrder; //-1-IVR收销售订单号,送至SOA //将传入值赋给传递参数项,两边皆是char *.
//body.saleOrderNo = &saleOrderNo.low; //将char* low的内存地址上字符拷贝给TYPE_SON **

request.MbfHeader = &header;
request.MbfBody = &body;

soapinput.input1 = &request;

//输出项--记录到DBtable
char *deliveryNo = new char[256]; //-4-SOA返回交货单号
//调用Webservice
if(soap_call___ns1__ivrQueryDeliveryinfo(&soap,server,NULL,&soapinput,&soapoutput) == SOAP_OK)
{
//........

int main(int argc, char* argv[])
{
int iThread = 0;
cout<<"输入启动线程数:";
cin>>iThread;
for (int i=0; i<iThread; i++)
{
_beginthreadex(NULL, 0, ReadDatabaseThread, NULL, 0, NULL);
}

while(k<iThread)
{
Sleep(4000);
}

return 0;
}

...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
山书生 2010-06-25
  • 打赏
  • 举报
回复

int SendParamter( char *saleOrder) {
//......
return 0;
}

int k = 0;

unsigned int __stdcall ReadDatabaseThread(void *param)
{
for (int i=0; i<10; i++)
{
SendParamter("200004294");
}
k++;
return 0;
}

int main(int argc, char* argv[])
{
int iThread = 0;
cout<<"输入启动线程数:";
cin>>iThread;
for (int i=0; i<iThread; i++)
{
_beginthreadex(NULL, 0, ReadDatabaseThread, NULL, 0, NULL);
}
while(k<iThread)
{
Sleep(4000);
}
return 0;
}
山书生 2010-06-25
  • 打赏
  • 举报
回复
从结构上,是要将SendParamter(char *saleOrder )值传入到request.input1.body.saleOrderNo.low
可能我写的SendParamter(char *saleOrder )就不太对。
不知道该如何将这个传给low.
山书生 2010-06-24
  • 打赏
  • 举报
回复
尝试
saleOrderNo = **body.saleOrderNo;
调试到此异常退出
估计是没有将值给到body~
body.saleOrderNo是该TYPE的**
saleOrderNo.low是char *型,不能直接来。尝试用memset memcpy或strcpy都不行似乎。。。
:(
lds1ove 2010-06-24
  • 打赏
  • 举报
回复
sff
chunchun0025 2010-06-24
  • 打赏
  • 举报
回复
xuexi
山书生 2010-06-24
  • 打赏
  • 举报
回复

//soapStub.h
class SOAP_CMAC ns3__ivrQueryDeliveryinfoRequestBody
{
public:
int __sizesaleOrderNo; /* sequence of elements <saleOrderNo> */
ns3__ivrQueryDeliveryinfosaleOrderNo **saleOrderNo; /* optional element of type ns3:ivrQueryDeliveryinfosaleOrderNo */
struct soap *soap; /* transient */
//..........
class SOAP_CMAC ns3__ivrQueryDeliveryinfosaleOrderNo
{
public:
char *low; /* optional element of type xsd:string */
struct soap *soap; /* transient */

这里面,saleOrderNo.low获取到了传递进去的saleOrder,但是源码里不知道是否没有将这个值传给body~
求教该如何解决~
对**跟&一直很晕b

8,906

社区成员

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

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