0

我已经坚持了超过 24 小时。我在网上找到的任何信息都与我的要求无关。基本上,我需要在将 XML 发送到服务器之前对其进行编辑。但是,我无法弄清楚如何使用 wsdl 文件执行此操作。我需要在发送之前编辑 xml。在线研究显示了这些参数;

request - XML SOAP 请求。location - 要请求的 URL。action - SOAP 操作。版本 - SOAP 版本。

我正在使用这个;

$response = $client->__doRequest('','http://hiddenlink','myMethod','1');
echo $response;

使用 wsdl 文件时的请求是什么。

4

1 回答 1

2

我正在寻找解决方案来更改必须在 SOAP 请求中发送的标头,扩展 __doRequest 解决了它。

    class MSSoapClient extends SoapClient {

      function __doRequest($request, $location, $action, $version) {
        $header = '<SOAP-ENV:Header>
        <ns1:AuthenticationHeader>
        <ns1:Username>XXXX</ns1:Username>
        <ns1:Password>XXXX</ns1:Password>
        <ns1:Function>XXX</ns1:Function>
        <ns1:TimeOutMilliSec>4000</ns1:TimeOutMilliSec>
        </ns1:AuthenticationHeader>
        </SOAP-ENV:Header><SOAP-ENV:Body>';
        $request = str_replace('<SOAP-ENV:Body>', $header, $request);

        return parent::__doRequest($request, $location, $action, $version);
      }

$client = new MSSoapClient($wsdl, array('trace' => 1, "exceptions" => 0, 'use' => SOAP_LITERAL));
于 2014-11-13T12:37:22.960 回答