如何在__soapcall()函数中的php中的soap请求中发送参数

时间:2018-06-28 13:45:27

标签: php xml soap

我想向服务器发送以下xml请求,该请求通过使用soap UI而不是在php中发送确定:

  <ns:AgentLogin>

       <ns:AgentLoginRQ>

        <ns:Authentication>

           <ns:DBName>************</ns:DBName>

           <ns:IP>************</ns:IP>

        </ns:Authentication>

        <ns:AgentABTA>************</ns:AgentABTA>

        <ns:UserName>************</ns:UserName>

        <ns:Password>************</ns:Password>

      </ns:AgentLoginRQ>

  </ns:AgentLogin>

我这样创建肥皂客户端

 $client = new \SoapClient("https://digicom-poc-ota.inspiretec.com/TravelinkCEService.svc?wsdl"); 

没关系,然后创建肥皂调用功能

$data = array('AgentABTA'=>'DIGICOM_POC_DEMO'
        ,'UserName'=>'************'
        ,'Password'=>'************'
        ,'Products'=>'************'
        );

$result = $client->__soapCall('AgentLogin',$data);

__ soapcall给我错误的请求正文。

2 个答案:

答案 0 :(得分:1)

Hope this might help you out:

$client = new \SoapClient("your_wsdl_link"
            , ['trace' => true]);
                $params =  array(
                'AgentLoginRQ' => array(
                    'DBName'=>'DATABASE_NAME',
                    'AgentABTA' => '****',
                    'UserName' => '****',
                    'Password' => '********',
                    'Products' => '',
                )
            );
        $result = $client->YourFunction($params);

答案 1 :(得分:0)

这肯定是因为数组数据结构根据WSDL是不正确的。您应该最终使用WSDL来生成PHP,这是当今常见的做法。通过OOP方法,它可以帮助构造请求数据并轻松处理所有响应。

您应该看一下PackageGenerator项目,它可以真正帮助您处理此SOAP Web服务。