Thread View: pl.comp.xml
4 messages
4 total messages
Started by n00rbi
Tue, 12 Dec 2006 08:54
PHP / nuSOAP / Typ złożony
Author: n00rbi
Date: Tue, 12 Dec 2006 08:54
Date: Tue, 12 Dec 2006 08:54
87 lines
3088 bytes
3088 bytes
Piszę webservice za pomocą nuSOAP. Mam do przekazania/odebrania
komunikat w następującym formacie XML
<KOMUNIKAT>
<DANESTATYSTYCZNE>
<ILOSC1>111</ILOSC1>
<ILOSC2>112</ILOSC2>
<ILOSC3>113</ILOSC3>
<ILOSC4>114</ILOSC4>
</DANESTATYSTYCZNE>
<DANEADRESOWE>
<NAZWA>ABC</NAZWA>
<REGON>9488585885</REGON>
</DANEADRESOWE>
</KOMUNIKAT>
Po stronie klienta wywołuję więc:
//----------------------------------------
$danest = array('ILOSC1' => 111, 'ILOSC2' => 112, 'ILOSC3' => 113,
'ILOSC4'=> 114 );
$daneadr = array('NAZWA1' => 'ABC', 'REGON' => '9488585885');
$kom = array ( $danest, $daneadr);
$result = $client->call('UpdateTest', array('KOMUNIKAT' => $kom));
//----------------------------------------
Po stronie serwera mam zdefinowane typy:
//----------------------------------------
$server->wsdl->addComplexType(
'DANESTATYSTYCZNE',
'complexType',
'struct',
'all',
'',
array(
'ILOSC1' => array('name' => 'ilosc1', 'type' => 'xsd:int'),
'ILOSC2' => array('name' => 'ilosc2', 'type' => 'xsd:int'),
'ILOSC3' => array('name' => 'ilosc2', 'type' => 'xsd:int'),
'ILOSC4' => array('name' => 'ilosc3', 'type' => 'xsd:int')
)
);
$server->wsdl->addComplexType(
'DANEADRESATA',
'complexType',
'struct',
'all',
'',
array(
'NAZWA1' => array('name' => 'nazwa1', 'type' => 'xsd:string'),
'REGON' => array('name' => 'regon', 'type' => 'xsd:string')
)
);
$server->wsdl->addComplexType(
'KOMUNIKAT',
...
(???????????????????????)
...
};
$server->register('UpdateTest',
array('KOMUNIKAT' => 'tns:KOMUNIKAT'),
array('return' => 'tns:Odpowiedz'),
'urn:test3WSDL',
'urn:test3WSDL#UpdateTest',
'rpc',
'encoded',
'test'
);
//----------------------------------------
Pytanie:
Jak za pomocą AddComplexType zbudować typ 'KOMUNIKAT' złożony z dwóch
typów: 'DANESTATYSTYCZNE' i 'DANEADRESATA'?
Nie mogę do tego dojść, próbowałem bezskutecznie, w tutorialach
znalazłem tylko przykłady z jednym poziomem.
Proszę o wsparcie.
n00rbi
Re: PHP / nuSOAP / Typ złożony
Author: szomiz
Date: Tue, 12 Dec 2006 10:23
Date: Tue, 12 Dec 2006 10:23
10 lines
1228 bytes
1228 bytes
Użytkownik "n00rbi" <norbi666@gazeta.pl> napisał w wiadomości news:ellqnm$erf$5@news.task.gda.pl... A to ono: > $server->wsdl->addComplexType( Czegos przez przypadek nie zwraca? sz.
Re: PHP / nuSOAP / Typ złożony
Author: n00rbi
Date: Tue, 12 Dec 2006 10:47
Date: Tue, 12 Dec 2006 10:47
66 lines
2791 bytes
2791 bytes
Użytkownik szomiz napisał:
>
> A to ono:
>
>>$server->wsdl->addComplexType(
>
> Czegos przez przypadek nie zwraca?
>
> sz.
>
Żeby stworzyć typ złożony spróbowałem czegoś takiego, ale nie wiem cxzy
nie błądzę:
$server->wsdl->addComplexType(
'KOMUNIKAT',
'complexType',
'array',
'all',
'SOAP-ENC:Array',
array(
'DANESTATYSTYCZNE'=> array("ref" => "SOAP-ENC:arrayType",
'type'=>'tns:DANESTATYSTYCZNE'),
'DANEADRESATA'=>array("ref" => "SOAP-ENC:arrayType",
'type'=>'tns:DANEADRESATA')
),
'tns:KOMUNIKAT'
);
Request wygląda w tym momencie tak:
<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
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/"
xmlns:tns="urn:test3WSDL">
<SOAP-ENV:Body>
<tns:UpdateTest xmlns:tns="urn:test3WSDL">
<KOMUNIKAT xsi:type="tns:KOMUNIKAT">
<DANESTATYSTYCZNE xmlns="" xsi:nil="true"
xsi:type=":DANESTATYSTYCZNE"/>
<DANEADRESATA xmlns="" xsi:nil="true" xsi:type=":DANEADRESATA"/>
</KOMUNIKAT></tns:UpdateTest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
a chciałbym żeby wyglądał tak:
<KOMUNIKAT xsi:type="tns:KOMUNIKAT">
<DANESTATYSTYCZNE>
<ILOSC1>111</ILOSC1>
<ILOSC2>112</ILOSC2>
...
</DANESTATYSTYCZNE>
<DANEADRESATA>
<NAZWA1>...</NAZWA1>
...
</DANEADRESATA>
</KOMUNIKAT>
siedze nad tym juz troche i nie wiem jak to ugryzc :-/
Re: PHP / nuSOAP / Typ złożony
Author: szomiz
Date: Tue, 12 Dec 2006 11:29
Date: Tue, 12 Dec 2006 11:29
27 lines
1947 bytes
1947 bytes
Użytkownik "n00rbi" <norbi666@gazeta.pl> napisał w wiadomości
news:elm1cb$r3$1@news.task.gda.pl...
> Żeby stworzyć typ złożony spróbowałem czegoś takiego, ale nie wiem cxzy
> nie błądzę:
Ja tez nie wiem, ale przeciez od kombinowania nic nie wybuchnie...
> $server->wsdl->addComplexType(
> 'KOMUNIKAT',
> 'complexType',
> 'array',
> 'all',
> 'SOAP-ENC:Array',
> array(
> 'DANESTATYSTYCZNE'=> array("ref" => "SOAP-ENC:arrayType",
> 'type'=>'tns:DANESTATYSTYCZNE'),
> 'DANEADRESATA'=>array("ref" => "SOAP-ENC:arrayType",
> 'type'=>'tns:DANEADRESATA')
> ),
Sprawdziles _co_ zwraca $server->wsdl->addComplexType ?
Bo w normalnych srodowiskach cos takiego zwraca zazwyczaj obiekt, ktory
mozna mniej lub bardziej wprost wykorzystac do tworzenia struktury wlasnie.
sz.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads