5
我們一直在設置PHP SOAP客戶端以利用皇家郵件追蹤API的一些問題。我們有一個所有與皇家郵政建立帳戶,並有我們的身份證和祕密。我們可以使用SOAPUI來使用它,但是當試圖在PHP中實現時,我們總是會收到「錯誤的版本」錯誤。我們在本地有WSDL文件(皇家郵件通過他們的開發者門戶提供)可以與SOAPUI協同工作,但不適用於PHP SOAP客戶端。我們希望有人能夠看到我們是否做錯了什麼。我將發佈下面的代碼,但會從代碼中省略我們的祕密和ID。PHP和皇家郵件追蹤API
<?php
ini_set('soap.wsdl_cache_enabled', 0);
ini_set('soap.wsdl_cache_ttl', 900);
ini_set('default_socket_timeout', 15);
$trackingNumber = 'F111111111JD';
$time = gmdate('Y-m-d\TH:i:s');
$intHeaders = [
'dateTime' => $time,
'version' => '1.0',
'identification' => [
'applicationId' => '***********',
'transactionId' => 123456
]
];
$wsdl = 'WSDL/Tracking_API_V1_1_1.wsdl';
$options = array(
'uri'=>'http://schemas.xmlsoap.org/soap/envelope/',
'style'=>SOAP_RPC,
'use'=>SOAP_ENCODED,
'soap_version'=>SOAP_1_2,
'cache_wsdl'=>WSDL_CACHE_NONE,
'connection_timeout'=>15,
'trace'=>true,
'encoding'=>'UTF-8',
'exceptions'=>true,
'stream_context' => stream_context_create([
"http" => [
'Accept' => 'application/soap+xml',
'X-IBM-Client-Secret' => '****',
'X-IBM-Client-Id'=> '****'
]
])
);
try {
$soap = new SoapClient($wsdl, $options);
$data = $soap->getSingleItemHistory(['integrationHeader' => $intHeaders, 'trackingNumber' => $trackingNumber]);
}
catch(Exception $e) {
die($e->getMessage());
}
var_dump($data);
die;
我們已經使用SOAP_1_1和SOAP_1_2爲「soap_version」嘗試,但它總是回來與「錯版」的錯誤。
希望有人能夠提供幫助。
太謝謝你了。這對我們有效。由於我離開並無法訪問該網站,因此很抱歉對您的答案提出了過遲的回覆。 – Flyingearl
@alexbibie,你拯救我的一天。在我正在實施的一個銀行API中,我的頭腦已經持續了兩天。 – Anon30