WSO2 WSF PHP SOAP XML формат запроса - PullRequest
1 голос
/ 01 декабря 2011

У меня установлена ​​среда wso2 PHP WS 2.1.0 на сервере centos (PHP 5.2.10, apache / 2.2.3) с активным собственным расширением PHP SOAP.Образцы WS-клиентов работают нормально.Единственная разница в моей установке WS по умолчанию заключается в том, что файлы wsf находятся в структуре пути / usr / lib64 / php / modules / wsf_c / вместо /var/lib/.

У меня проблемы с генерациейполный запрос SOAP с использованием следующего клиентского сценария -

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);

$reqPayloadString = <<<XML
<soap:Envelope xmlns:soap=”http://www.w3.org/2003/05/soap-envelope” xmlns:typ=”http://service.dataxmldistribution.argos.cls.fr/types”>
<soap:Header/>
<soap:Body>
<typ:xmlRequest>
<typ:username>user</typ:username>
<typ:password>password</typ:password>
<typ:platformId>'1,2,3,4,5'</typ:platformId>
<typ:nbDaysFromNow>10</typ:nbDaysFromNow>
</typ:xmlRequest>
</soap:Body>
</soap:Envelope>
XML;

$reqMessage = new WSMessage($reqPayloadString);
try {

$client = new WSClient(array(
                "wsdl" => "http://ws-argos.cls.fr/argosDws/services/DixService?wsdl",
                "to" => "http://ws-argos.cls.fr/argosDws/services/DixService",
                "useSOAP" => 1.2,
                "action"=>"getXml"
                ));


$resMessage = $client->request($reqPayloadString);               
printf("Response = %s <br/>\n", htmlspecialchars($resMessage->str));

} catch (Exception $e) {
if ($e instanceof WSFault) {
        printf("Soap Fault: %s\n", $e->code);
    } else {
        printf("Message = %s\n",$e->getMessage());
    }
}

printf("<br/> Request = %s </br>",
            htmlspecialchars($client->getLastRequest()));
printf("<br/> Response = %s </br>",
            htmlspecialchars($client->getLastResponse()));
?>

Сценарий возвращает следующее -

Message = Invalid Input Message
Request = <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body></soapenv:Body></soapenv:Envelope>

Response = <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en">Fault occurred while processing.</soap:Text></soap:Reason></soap:Fault></soap:Body></soap:Envelope>

В журнале клиента отображается одна ошибка - 'om_document.c (102) Невозможно выполнитьполучить корневой узел '.

Я предполагаю, что тот факт, что запрос xml отсутствует внутри элемента body в распечатке из getLastRequest, что мне нужно для форматирования полезной нагрузки xml по-другому - возможно, с использованием пространств имен?

Я не уверен, как это должно выглядеть, поэтому буду крайне признателен за любые советы, если это проблема.Я пробовал этот запрос с и без 'wsdl', на который есть ссылка в массиве WSClient, и попытался определить полезную нагрузку как массив вместо строки XML (как вы могли бы с собственным запросом SOAP).

СпасибоУильям

...