1
從調試另一應用中,我發現,它發送下面的XML SOAP服務器(在本示例代碼部分被最小化,則XML是大約200行長:如何使用PHP的SoapClient創建這個xml?
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:m0="http://schemas.ccs.nl/datacatalogus/modellen/modelrelatie">
<SOAP-ENV:Header>
<m:header xmlns:m="http://schemas.ccs.nl/soap">
<m:account>account</m:account>
<m:naam>naam_header</m:naam>
<m:wachtwoord>wachtwoord</m:wachtwoord>
<m:bedrijfsnummer>bedrijfsnummer</m:bedrijfsnummer>
<m:tussenpersoonnummer>tussenpersoonnummer</m:tussenpersoonnummer>
</m:header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:RelatieMuteren xmlns:m="http://schemas.ccs.nl/services/relatieservice">
<m:relatie pc="W">
<m0:adres>adres</m0:adres>
</m:relatie>
</m:RelatieMuteren>
</SOAP-ENV:Body>
顯然, 。<m0:adres></m0:adres>
之間的部分是很多大,對應於存儲陣列中的我的數據。然而,如果我嘗試發送郵件使用__soapCall
請求,PHP構建以下請求:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://schemas.ccs.nl/datacatalogus/modellen/modelrelatie"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns2="http://schemas.ccs.nl/services/relatieservice" xmlns:ns3="http://schemas.ccs.nl/soap">
<SOAP-ENV:Header>
<ns3:header>
<ns3:account>account</ns3:account>
<ns3:naam>naam</ns3:naam>
<ns3:wachtwoord>wachtwoord</ns3:wachtwoord>
<ns3:bedrijfsnummer>bedrijfsnummer</ns3:bedrijfsnummer>
<ns3:tussenpersoonnummer>tussenpersoonnummer</ns3:tussenpersoonnummer>
</ns3:header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns2:RelatieMuteren>
<ns2:relatie pc="I">
<ns1:adres>Postbus 53</ns1:adres>
</ns2:relatie>
</ns2:RelatieMuteren>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
正如你所看到的,第二個XML與第一個完全不同。任何人都可以解釋爲什麼它是不同的,我可以如何創建第一種類型的XML?
我使用下面的代碼的要求去做:
$client = new SoapClient("http://www.cdsverzekeringen.nl/ws_prod/services/RelatieService.asmx?WSDL", array('trace' => 1));
$aHeader = array(
'account' => "PRIVATE",
'naam' => "PRIVATE",
'wachtwoord' => "PRIVATE",
'bedrijfsnummer' => "PRIVATE",
'tussenpersoonnummer' => "PRIVATE",
);
$client->__setSoapHeaders(new SoapHeader("http://schemas.ccs.nl/soap", 'header', $aHeader));
$vtResult = $client->__soapCall("RelatieMuteren", array($aRelatieInfo));
的$ aRelatieInfo陣列的格式如下:
array
'relatie' =>
array
'adres' => string 'Postbus 53' (length=10)
我希望有人能幫助我。提前致謝!
嘛XML肯定會有所不同,但他們真的不是。如果您「理解」了您的頭腦中的命名空間(或在一張紙上/在文本編輯器中),您會發現兩個XML文檔的模式都是相同的。如果服務沒有給您預期的結果,請告訴我們您期待的結果以及服務當前返回的內容(如果有錯誤消息,請粘貼完整的錯誤消息) – vstm 2013-03-15 15:47:12
這就是問題所在。它只是返回一個客戶端代碼應該意味着數據被處理。但是,它沒有改變,所以我想我的XML是錯誤的。 – henk 2013-03-15 15:55:41
那麼我看到的唯一區別是'relatie'結構的'pc'屬性是「I」而不是「W」。如果你將'pc'設置爲'「W」'這些請求應該是相同的。你嘗試添加'$ aRelatieInfo ['relatie'] ['pc'] =「W」;'? – vstm 2013-03-15 16:05:05