我正在嘗試從PHP執行肥皂呼叫的問題。肥皂呼叫中PHP重複元素
首先提供一些背景信息:呼叫轉到在大型CRM系統上進行人員搜索的系統。它需要諸如姓名,城市,出生日期等信息。)成功時,它應該返回一個或多個ID。肥皂接口是系統的標準部分,所以我不能影響呼叫的佈局。
我首先通過在SoapUI中構建肥皂請求開始工作,以查看是否可以使其工作。我結束了這個SOAP請求,這是工作:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:hidl="http://humaninference.com/hidl-mapped">
<soap:Header/>
<soap:Body>
<hidl:HI__DQComponents__Identify__Searching__Search>
<hidl:model>MAGMA::PERSON</hidl:model>
<hidl:execution>Match</hidl:execution>
<hidl:interfaceFields>
<hidl:item>
<hidl:Name>master_id</hidl:Name>
<hidl:Value>0</hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>Name</hidl:Name>
<hidl:Value>jansen</hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>birthdate</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>add_id</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>street</hidl:Name>
<hidl:Value>oudegracht</hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>dumstreet</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>housenumber</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>postcode</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>city</hidl:Name>
<hidl:Value>Utrecht</hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>citydum</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>add_line_twee</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
</hidl:interfaceFields>
</hidl:HI__DQComponents__Identify__Searching__Search>
</soap:Body>
</soap:Envelope>
下一步是建立從PHP相同的請求,爲我寫了這段代碼:
$result = $client->HI__DQComponents__Identify__Searching__Search(array(
'model' => 'MAGMA::PERSON',
'execution' => 'Search',
'interfaceFields' => array (
'item' => array ('Name' => 'master_id', 'Value' => '0'),
'item' => array ('Name' => 'Name', 'Value' => 'jansen'),
'item' => array ('Name' => 'birthdate', 'Value' => ' '),
'item' => array ('Name' => 'add_id', 'Value' => ' '),
'item' => array ('Name' => 'street', 'Value' => 'Oudegracht'),
'item' => array ('Name' => 'dumstreet', 'Value' => ' '),
'item' => array ('Name' => 'housenumber', 'Value' => ' '),
'item' => array ('Name' => 'postcode', 'Value' => ' '),
'item' => array ('Name' => 'city', 'Value' => 'utrecht'),
'item' => array ('Name' => 'citydum', 'Value' => ' '),
'item' => array ('Name' => 'add_line_twee', 'Value' => ' '),
)
));
echo '<PRE>';
print_r($result);
echo '</PRE>';
然而,這種失敗。這個問題非常明顯,因爲「item」元素重複了好幾次,在PHP中它是數組的關鍵,只有Item add_line_twee將被放在名爲「interfaceFields」的數組中,因爲它總是被覆蓋。
不幸的是我不知道如何以另一種方式做到這一點,所以我無法得到像我從SoapUI創建的示例中的請求。
任何想法?
令人驚訝的是,這工作!我認爲這不會是因爲我認爲名爲「Item」的元素是強制性的,但顯然不是。謝謝! – Erikl 2010-09-30 07:55:03