URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3581
[ Назад ]

Исходное сообщение
"PHP и веб-сервисы"

Отправлено Simps , 15-Сен-05 17:33 
Небольшой вопрос по веб-сервисам ...
Есть веб-сервис http://www.crossroam.com/BARSWS/WS.asmx

Есть клиент на php который не работает =) Не могу понять в чем замес

Сам код
<?php
$debug = 1;
ini_set("soap.wsdl_cache_enabled", "0"); // disable WSDL cache
$parms = array(new SoapParam(
                /* Значение параметра */
                "RUS93",
                /* Имя параметра */
                "WispCarrierCode"
        ));
$qopts = array("soapaction"=>"http://www.t-systems.com/getAllowedProviders",'uri'=>"http://www.t-systems.com/getAllowedProviders");
$opts = array('location' => "http://www.crossroam.com/BARSWS/WS.asmx",
                                     'uri'      => "http://www.t-systems.com",
                                     'trace'      => 1,
                                     'exceptions' => 1,
                                       'style'    => SOAP_DOCUMENT,
                                       'use'      => SOAP_LITERAL);
$client = new SoapClient(null, $opts);
$out = $client->__call('getAllowedProviders', $parms, $qopts);
echo "<pre>" . htmlspecialchars($client->__getLastRequest()) . "</pre>";
echo "<pre>" . htmlspecialchars($client->__getLastResponse()) . "</pre>";
var_dump($out);

?>

В итоге если смотреть примеры xml-сообщений тут http://www.crossroam.com/BARSWS/WS.asmx?op=getAllowedProviders

И взять то что у меня, то мы увидим что запросы отличаются ... Если изменить style/use на RPC/ENC то вид становится более менее похожий но в ответ идет все то же пустое сообщение ...

Запрос
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <WispCarrierCode>RUS93</WispCarrierCode>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Запрос RPC/ENC
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.t-systems.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
    <ns1:getAllowedProviders>
        <WispCarrierCode xsi:type="xsd:string">RUS93</WispCarrierCode>
    </ns1:getAllowedProviders>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ответ:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wsse... xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wsse...
    <soap:Header>
     <wsa:Action>http://www.t-systems.com/getAllowedProvidersResponse</wsa...
        <wsa:MessageID>uuid:ba4ed5ab-0e18-427b-adf8-a61a6fa7c596</wsa:MessageID>
        <wsa:RelatesTo>uuid:074a0b4d-c866-45c5-8b13-4e51ee42305c</wsa:RelatesTo>
     <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonym...
        <wsse:Security>
            <wsu:Timestamp wsu:Id="Timestamp-6a368585-4d8f-418d-a1c9-119fa5eb12e3">
                <wsu:Created>2005-09-14T11:35:25Z</wsu:Created>
                <wsu:Expires>2005-09-14T11:40:25Z</wsu:Expires>
            </wsu:Timestamp>
        </wsse:Security>
    </soap:Header>
    <soap:Body>
        <getAllowedProvidersResponse xmlns="http://www.t-systems.com">
            <getAllowedProvidersResult />
            <getAllowedProvidersResponse>
    </soap:Body>
</soap:Envelope>

У кого есть опыт работы с веб-сервисами из php средствами штатного soap?


Содержание

Сообщения в этом обсуждении
"PHP и веб-сервисы"
Отправлено dev26th.net , 19-Сен-05 12:13 
>Запрос RPC/ENC
><?xml version="1.0" encoding="UTF-8"?>
><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.t-systems.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
><SOAP-ENV:Body>
>    <ns1:getAllowedProviders>
>        <WispCarrierCode xsi:type="xsd:string">RUS93</WispCarrierCode>
>    </ns1:getAllowedProviders>
></SOAP-ENV:Body>
></SOAP-ENV:Envelope>

Здесь у WispCarrierCode не указан namespace, поэтому сервис его и не видит.

>$parms = array(new SoapParam(
>    /* Значение параметра */
>    "RUS93",
>    /* Имя параметра */
>    "WispCarrierCode"
>        ));

Попробуй для "WispCarrierCode" как-то указать namespace "http://www.t-systems.com" (не знаю, как это сделать в php); или, в качестве хака, заменить на "ns1:WispCarrierCode".


"PHP и веб-сервисы"
Отправлено Simps , 19-Сен-05 15:17 
>>Запрос RPC/ENC
>><?xml version="1.0" encoding="UTF-8"?>
>><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.t-systems.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>><SOAP-ENV:Body>
>>    <ns1:getAllowedProviders>
>>        <WispCarrierCode xsi:type="xsd:string">RUS93</WispCarrierCode>
>>    </ns1:getAllowedProviders>
>></SOAP-ENV:Body>
>></SOAP-ENV:Envelope>
>
>Здесь у WispCarrierCode не указан namespace, поэтому сервис его и не видит.
>
>
>>$parms = array(new SoapParam(
>>    /* Значение параметра */
>>    "RUS93",
>>    /* Имя параметра */
>>    "WispCarrierCode"
>>        ));
>
>Попробуй для "WispCarrierCode" как-то указать namespace "http://www.t-systems.com" (не знаю, как это сделать
>в php); или, в качестве хака, заменить на "ns1:WispCarrierCode".

Огромнейшее спасибо!!!!! Действительно замена WispCarrierCode на ns1:WispCarrierCode помогла ...