SOAP and SimpleXml and namespaces

runk

Новичок
SOAP and SimpleXml and namespaces

Как следует из документации к стандартному SOAP клиент\серверу, сервер не имеет никакого доступа к части <Header></Header> SOAP запроса. Было бы удобнее слать логин и прочую авторизационную инфу именно в нем. Значит выход только распарсить raw post data и взять из запроса что нужно. Не могу понять почему SimpleXml не может работать в пространствами имен, как в этом примере, просто пустой класс получается, без какой либо инфы:

PHP:
print_r(new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope 
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:ns1="http://xml.apache.org/xml-soap" 
  xmlns:ns2="http://soapinterop.org/echoheader/" 
  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:Header>
        <ns2:echoMeStringRequest>hello world</ns2:echoMeStringRequest>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <SOAP-ENV:getLookupCountries>
            <asAssoc xsi:nil="true"/>
        </SOAP-ENV:getLookupCountries>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>'));
Вывод:
SimpleXMLElement Object
(
)

В чем дело, что тут не так?

-~{}~ 11.10.06 23:47:

Вопрос снят.

PHP:
<?php
$text = $xml->xpath('/SOAP-ENV:Envelope/SOAP-ENV:Header/ns2:echoMeStringRequest')
?>
 

Alexandre

PHPПенсионер
Было бы удобнее слать логин и прочую авторизационную инфу именно в нем
так и делается в защищенных SOAP серверах, см. спецификации
http://docs.oasis-open.org/wss/v1.1/
http://www.w3.org/TR/2004/WD-ws-addr-soap-20041208
http://www-106.ibm.com/developerworks/webservices/library/ws-secure
http://www.w3.org/TR/SOAP-dsig/

скоро допишу авторизацию для XMLSecurity и примусь за SOAP,
народ жаждет защищенный SOAP
 

runk

Новичок
Автор оригинала: Wicked
интересный способ работы с Soap :)
В данный момент нет никакой возможности добраться до хиреров SOAP запроса стандартным SoapServer'ом, поэтому приходится вот так изощеряться.

-~{}~ 12.10.06 15:22:

Автор оригинала: Alexandre
так и делается в защищенных SOAP серверах, см. спецификации
http://docs.oasis-open.org/wss/v1.1/
http://www.w3.org/TR/2004/WD-ws-addr-soap-20041208
http://www-106.ibm.com/developerworks/webservices/library/ws-secure
http://www.w3.org/TR/SOAP-dsig/

скоро допишу авторизацию для XMLSecurity и примусь за SOAP,
народ жаждет защищенный SOAP
Спасибо за ссылки, буду смотреть.
 

Wicked

Новичок
runk
извиняюсь, поспешил с ответом.

а почему хочется передвать авторизационную инфу в Header'е? Я так думаю, что это мешает разграничению на общедоступные и требующие авторизации методы. Или я не прав?
 

runk

Новичок
Автор оригинала: Wicked
а почему хочется передвать авторизационную инфу в Header'е? Я так думаю, что это мешает разграничению на общедоступные и требующие авторизации методы. Или я не прав?
Общедоступных методов нет, все требуют авторизации :) Вот поэтому.
 

Alexandre

PHPПенсионер
делай метод для авторизации, стандартный SOAP клиент не позволяет делать авторизацию. можешь изобретать нестандартный.
 

runk

Новичок
Автор оригинала: Alexandre
делай метод для авторизации, стандартный SOAP клиент не позволяет делать авторизацию. можешь изобретать нестандартный.
Да, так и было уже сделано
 
Сверху