Use Dom to parse the xml string.

解决方案 »

  1.   

    真没办法,写了一个webservice但是结果不对,请明白的帮忙看看
    server端:
    <?php
    require('nusoap.php');
    //$debug=1;
    $soap = new soap_server();
    $soap->configureWSDL('lncncApInvoke', 'usn:lncncApInvoke');
    $soap->wsdl->schemaTargetNamespace = 'usn:lncncApInvoke';
    $soap->wsdl->addComplexType(
            'ServiceArg',
            'complexType',
            'struct',
            'sequence',
            '',
            array(
                'argName' => array('name'=>'argName', 'type'=>'xsd:string'),         
                'argValue' => array('name'=>'argValue', 'type'=>'xsd:string')
                )
        );
    $soap->wsdl->addComplexType(
            'CreateCompanyRequest',
            'complexType',
            'struct',
            'sequence',
            '',
            array(
                'apID' => array('name'=>'apID', 'type'=>'xsd:string'),         
                'timeStamp' => array('name'=>'timeStamp', 'type'=>'xsd:string'), 
                'orderNo' => array('name'=>'orderNo','type'=>'xsd:string'),
                'companyID' => array('name'=>'companyID','type'=>'xsd:string'),
                'companyName' => array('name'=>'companyName','type'=>'xsd:string'),
                'productID' => array('name'=>'productID','type'=>'xsd:string'),
                'userID' => array('name'=>'userID','type'=>'xsd:string'),
                'login' => array('name'=>'login','type'=>'xsd:string'),
                'password' => array('name'=>'password','type'=>'xsd:string'),
                'serviceArgs' => array('name'=>'serviceArgs','type'=>'xsd:ServiceArg')
                )
        );
    $soap->wsdl->addComplexType(
            'CreateCompanyResponse',
            'complexType',
            'struct',
            'sequence',
            '',
            array(
                'apID' => array('name'=>'apID', 'type'=>'xsd:string'),         
                'timeStamp' => array('name'=>'timeStamp', 'type'=>'xsd:string'), 
                'returnCode' => array('name'=>'returnCode','type'=>'xsd:int'),
                'errorDescription' => array('name'=>'errorDescription','type'=>'xsd:string')
                )
        );
    $soap->register('CreateCompany', // method name
        array('CreateCompanyRequest' => 'tns:CreateCompanyRequest'), // input parameters
        array('CreateCompanyResponse' => 'tns:CreateCompanyResponse') , // output parameters
        'usn:lncncApInvoke', // namespace
        'usn:lncncApInvoke#CreateCompany', // soapaction
        'rpc', // style
        'encoded', // use
        '验证用户名及随机数' // documentation
    );$soap->service($HTTP_RAW_POST_DATA);function CreateCompany($reqinfo)
    {
    print_r($reqinfo);
    $arr=array("apID"=>$reqinfo['apID'],'timeStamp' =>$reqinfo['timeStamp'],'returnCode'=>1000,'errorDescription'=>"");
    return $arr;
    }
    ?>
    client端:
    <?
    require('include/nusoap/nusoap.php');
    require('include/chinese/class.Chinese.php');$client=new soapclient('http://192.168.1.45/webservice/soaptest.php?wsdl',true);$params1 = array('apID'=>"10",'timeStamp' =>"2006",'orderNo'=>"1000",'companyID' =>'','companyName' =>'','productID' =>'','userID' =>'','login' =>'','password'=>'','serviceArgs' => array("0"=>array('argName' =>'','argValue' =>'')));$reversed = $client->call('CreateCompany',$params1);//此为返回值
    print_r($reversed);?>
    就是想使用wsdl方式创建webservice,然后能传递复杂的数据,最后输出结果,但是现在好像server端无法获得数据。项目中有要求请求和应答的报文格式如下:
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Request">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="apID" type="xs:string"/>
    <xs:element name="timeStamp" type="xs:string"/>
    <xs:element name="orderNo " type="xs:string"/>
    <xs:element name="companyID" type="xs:string"/>
    <xs:element name="companyName" type="xs:string"/>
    <xs:element name="productID" type="xs:string"/>
    <xs:element name="userID" type="xs:string"/>
    <xs:element name="login" type="xs:string"/>
    <xs:element name="password" type="xs:string"/>
    <xs:element name="serviceArgs" type="xs:ServiceArgs"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:complexType name="ServiceArgs">
    <xs:sequence>
    <xs:element name="ServiceArg" maxOccurs="unbound"/>
    <xs:complexType>
    <xs:sequence>
    <xs:element name="argName" type="xs:string"/>
    <xs:element name="argValue" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:sequence>
    </xs:complexType>
    </xs:schema>