我正在開發一個項目,要求使用他們的API在National Student ClearingHouse中驗證註冊成員。我一直在尋找互聯網上的任何地方,以找到一些片段,描述方法或示例如何查詢,但迄今爲止沒有運氣。文檔在php plus中的實現也非常有限我從來沒有使用過SOAP,所以這對我來說更加複雜。國家學生ClearingHouse SOAP web服務實現
不知怎的,我設法這裏介紹的是代碼:
$soap_url = 'https://xml.studentclearinghouse.org/ws/wsdl/HRXMLVerify.wsdl';
$client = new SoapClient($soap_url, array(
'SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
'SOAPENC' => 'http://schemas.xmlsoap.org/soap/encoding/',
'xsi' => 'http://www.w3.org/2001/XMLSchemainstance',
'xsd' => 'http://www.w3.org/2001/XMLSchema'
));
$data = array(
'BackgroundCheck' => array(
'account' => 'xxxx',
'userid' => 'xxxxx',
'password' => 'xxxxx'
),
'BackgroundSearchPackage' => array()
);
echo '<pre>';
print_r($client->__soapCall('verifyHRXML', $data));
,輸出:
SoapFault Object
(
[message:protected] => SOAP-ERROR: Encoding: object has no 'BackgroundSearchPackage' property
[string:Exception:private] =>
[code:protected] => 0
[file:protected] => /Applications/MAMP/htdocs/nch/index.php
[line:protected] => 39
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => /Applications/MAMP/htdocs/nch/index.php
[line] => 39
[function] => __soapCall
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => verifyHRXML
[1] => Array
(
[BackgroundCheck] => Array
(
[account] => xxxxxx
[userid] => xxxxx
[password] => xxxxxx
)
[BackgroundSearchPackage] => Array
(
)
)
)
)
)
[previous:Exception:private] =>
[faultstring] => SOAP-ERROR: Encoding: object has no 'BackgroundSearchPackage' property
[faultcode] => Client
[faultcodens] => http://schemas.xmlsoap.org/soap/envelope/
)
卡住機智這非常糟糕。
必須發送'BackgroundSearchPackage'與一個數組填充我請求驗證的成員的數據。這就是強制性的原因。 – 2013-03-06 15:04:48
好吧,你需要遵守wsdl的要求,並且沒有「BackgroundSearchPackage」與「BackgroundCheck」相同。但是你是對的,我沒有詳細檢查wsdl就回答太快了。 「BackgroundSearchPackage」被定義在*「BackgroundCheck」中,並且所有其他輸入(例如用戶ID)都是屬性。我修改了我的答案,並添加了一些來自wsdl的參考鏈接和片段。 – 2013-03-06 15:42:18
ARGH,回答得太快,最後一次編輯,我希望它的作品!還有最後一個注意事項:當你嵌套像這樣的複雜類型時,應該考慮類映射,請參閱SoapClient構造函數的classmap參數:http://www.php.net/manual/en/soapclient.soapclient.php – 2013-03-06 15:44:58