Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Stanislav Yadykin                    2:4615/59.31   05 Sep 2004  12:01:54
 To : All
 Subject : Проблема с SOAP::Header в SOAP::Lite
 -------------------------------------------------------------------------------- 
 
 Может кто связывался с SOAP::Header в пакете SOAP::Lite и подскажет, как
 правильно отдавать
 SOAP-ENV:Header при компоновке ответа для Delphi?
 
 В чем, собственно, проблема.
 Delphi, при компоновке запроса к серверу на SOAP::Lite отдает вот такой XML:
 
 <?xml version="1.0"?>
     <SOAP-ENV:Envelope
         xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
         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:Header
             SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
             xmlns:NS1="http://www.sample.com/DP/SOAP">
 
             <NS1:TSSID xsi:type="NS1:TResult">
                 <value xsi:type="xsd:int">13</value>
             </NS1:TSSID>
 
         </SOAP-ENV:Header>
 
         <SOAP-ENV:Body
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
             <NS2:SendLogin xmlns:NS2="http://www.sample.com/DP/SOAP">
                 <user xsi:type="xsd:string">user</user>
                 <password xsi:type="xsd:string">pass</password>
             </NS2:SendLogin>
         </SOAP-ENV:Body>
     </SOAP-ENV:Envelope>
 
 Т.е. Namespaces в SOAP-ENV:Header для объекта TResult присутствуют и описаны
 правильно, SOAP::Lite прекрасно
 понимает этот запрос и я имею доступ к переменной TSSID.
 
 SOAP::Lite, отвечая отдает вот такой XML:
 
 <?xml version="1.0" encoding="UTF-8"?>
     <SOAP-ENV:Envelope
         xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
         xmlns:namesp2="http://namespaces.soaplite.com/perl"
              ^^^^^^^^ (1)
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 
         <SOAP-ENV:Header>
            <namesp1:TResult xmlns:namesp1="http://www.sample.com/DP/SOAP"
 xsi:type="namesp2:TResult">
                                                                                
     ^^^^^^^^^ (2)
                 <value xsi:type="xsd:int">12345</value>
             </namesp1:TResult>
         </SOAP-ENV:Header>
         <SOAP-ENV:Body>
             <namesp3:SendLoginResponse
 xmlns:namesp3="http://www.sample.com/DP/SOAP">
                 <s-gensym5 xsi:type="xsd:string">userpass</s-gensym5>
             </namesp3:SendLoginResponse>
         </SOAP-ENV:Body>
     </SOAP-ENV:Envelope>
 
 Откуда берется (1) и , соответственно, как указать SOAP::Header тип для (2) как
 из пространства
 имен http://www.sample.com/DP/SOAP?
 
 Вот как в данный момент я отпарвляю ответ:
 
 ===============
 
 package DP::SOAP;
 use SOAP::Lite;
 our(@ISA);
 use strict;
 use warnings;
 
 @ISA = qw(SOAP::Server::Parameters);
 
 sub SendLogin {
     my $self = shift;
     my $user = shift;
     my $password = shift;
     my $env = pop;
     my $ssid = $env->headerof('//TSSID');
     my $res = TResult->new(12345);
     my $h = SOAP::Header->new;
     return $user.$password, SOAP::Header->name('TResult' =>
 
 $res)->uri('http://www.sample.com/DP/SOAP');
 
 }
 
 package TSSID;
 use strict;
 use warnings;
 
 sub new {
     my $pkg = shift; my $hash = {};
     my $self = bless ($hash, $pkg);
     $self->{value} = shift;
     return $self;
 }
 
 sub value {
     my $self = shift;
     return $self->{value};
 }
 
 package TResult;
 use strict;
 use warnings;
 
 sub new {
     my $pkg = shift; my $hash = {};
     my $self = bless ($hash, $pkg);
     $self->{value} = shift;
     return $self;
 }
 
 sub value {
     my $self = shift;
     return $self->{value};
 }
 
 =================
 
 Stanislav
 
 ... А ведь все еще только начинается!
 --- xto@ukr.net
  * Origin: -- (2:4615/59.31)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Проблема с SOAP::Header в SOAP::Lite   Stanislav Yadykin   05 Sep 2004 12:01:54 
 Re: Проблема с SOAP::Header в SOAP::Lite   Alex Mikhajlichenko   11 Sep 2004 17:10:53 
Архивное /ru.perl/3357413ae88f.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional