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;
}
//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

解决方案 »

  1.   

    从结构上,是要将SendParamter(char *saleOrder )值传入到request.input1.body.saleOrderNo.low
    可能我写的SendParamter(char *saleOrder )就不太对。
    不知道该如何将这个传给low.
      

  2.   


    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;
    }
      

  3.   

    low, saleOrder都是字符串指针,你把saleOrder付给low,就需要保证low处理的时候saleOrder指向的数据还是有效的,最好把saleOrder指针分配的数据放到堆上,用new来分配
      

  4.   


    header.MBServiceCode = "MBF_IVR_QUERY_DELIVERYINFO";
    char *low = new char[256];
    strcpy(low,saleOrder);
    saleOrderNo.low = low
    body.saleOrderNo = (ns3__ivrQueryDeliveryinfosaleOrderNo **)&saleOrderNo; request.MbfHeader = &header;
    request.MbfBody = &body;
    soapinput.input1 = &request;其实不论是否用new,调试过程,地址传递到强制转换之后就对应不上了。
    以上调试|- request {...}
      |- MbfBody 0x0090fedc
        |- saleOrderNo 0x0090feec
    |- 0x004dc348 const ns3__ivrQueryDeliveryinfosaleOrderNo::`vftable'
      + __vfptr 0x0040100f ns3__ivrQueryDeliveryinfosaleOrderNo::soap_type(void)
      + low 0x00401bcc "開y"
      + soap 0x0040106e ns3__ivrQueryDeliveryinfosaleOrderNo::soap_serialize(struct soap *)
    不知为何saleOrderNo之下多了一个层级。按理saleOrderNo之下就直接使__vfptr、low和soap了。不论强制转换**)&saleOrderN还是**)&saleOrderNo.low(后者在多出的 层级下又有 一个 __vfptr、low和soap结构)
      

  5.   

    指针的指针,传递值问题,求救C base
      

  6.   

    ON C++ BOARD
    THX EVERYBODY :)