Использование веб-службы (Soap) с использованием клиента php
Я пытаюсь написать клиент для этоговеб-сервис
Он использует двухуровневую аутентификацию (одну в заголовке запроса и включенную для доступа к данным на сервере), что означает, что мне нужно передать ее в заголовке. вот что я пытался сделать:
class ChannelAdvisorAuth
{
public $DeveloperKey;
public $Password;
public function __construct($key, $pass)
{
$this->DeveloperKey = $key;
$this->Password = $pass;
}
}
$devKey = "user";
$password = "pass";
$soapArr = array(
"trace"=>true,
"exceptions"=>true,
);
$url = "http://soalive.grimaldiwebservices.it/framework/JourneyManager?wsdl";
$client = new SoapClient($url, $soapArr);
echo "client created!";
print_r($client -> __getFunctions());
$auth = new ChannelAdvisorAuth($devKey, $password);
$header = new SoapHeader($url, "APICredentials", $auth, false);
$in0 = array(
"in0" => array(
"user" => "user",
"password" => "pass",
"message-id" => "",
"status" => array("error-code" => "", "error-desc" => ""),
"shiplist" => array("code-ship" => "", "desc-ship" => "")
));
echo "athenticated";
$result = $client->__soapCall("getShips", $in0); //line 41
Я получил эту ошибку:
Fatal error: Uncaught SoapFault exception: [env:Server] XPath expression
failed to execute. An error occurs while processing the XPath expression; the
expression is
ora:parseEscapedXML(bpws:getVariableData('OnMessage_getShips_InputVariable','par
ameters','/ns1:getShips/ns1:in0')). The XPath expression failed to execute; the
reason was: Start of root element expected.. Check the detailed root cause
described in the exception message text and verify that the XPath query is
correct. in C:\Program Files (x86)\xampp\htdocs\Test\index.php:41 Stack trace:
#0 C:\Program Files (x86)\xampp\htdocs\Test\index.php(41): SoapClient-
>__soapCall('getShips', Array) #1 {main} thrown in C:\Program Files
(x86)\xampp\htdocs\Test\index.php on line 41
Признаюсь, это не совсем моя чашка чая, может кто-нибудь объяснить, что происходит?
Можно ли вручную вызвать этот веб-сервис? может быть, с помощью мыльного интерфейса?
Это клиент, сгенерированный в soapUI, та же ошибка при выполнении:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gfw="http://gfw.services.grimaldilines.com">
<soapenv:Header>
<soapenv:Body>
<gfw:getShips>
<gfw:in0>?</gfw:in0>
</gfw:getShips>
</soapenv:Body>
</soapenv:Envelope>