2012-09-06 96 views
0

我一直堅持超過24小時。我在網上找到的任何信息都與我的要求無關。基本上,我需要在發送服務器之前編輯XML。但是,我無法弄清楚如何用wsdl文件做到這一點。我需要在發送之前編輯xml。在線研究顯示了這些參數;如何調用php肥皂客戶端__dorequest

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

我正在使用這個;

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

什麼是使用wsdl文件時的請求。

回答

-2

您必須擴展SOAP客戶端類,並創建自己的_doRequest

檢查[http://www.php.net/manual/en/soapclient.dorequest.php#100042][1]

例如,

[1]:http://www.php.net/manual/en/soapclient.dorequest.php#100042

+0

我已經做了這個,但是__doRequest方法的參數是什麼?我應該在$ client中傳遞$ request - > __ doRequest($ request,$ location,$ action,$ version) – mimmi

+0

檢查文檔頂部! – igasparetto

+0

我已經看到了。我不知道我應該如何獲取發佈前發佈的xml文件。我可以使用$ client - > __ getLastRequest(),但只有在您成功發佈xml後才能使用。 – mimmi

0

我正在尋找解決方案來更改必須在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)); 
+1

你的答案應該包含你的代碼的解釋和說明它解決了這個問題。 – AbcAeffchen

+0

請廣告一些描述 – Hamad