Tomáš Procházka wrote:
Zdravím, odpovídám na zprávu ze čtvrtka, 26. ledna 2006, kterou Martin Kuba napsal(a) v 12:08:43:Díky za cenné rady. Pokouším se místo Mapy přenášet tedy dvourozměrné pole, zatím taky ne s moc velkých úspěchem. Ale mimochodem, když napíšu třídu v Javě, tak s toho Axis vygeneruje toto: <schema targetNamespace="http://xml.apache.org/xml-soap" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="urn:ws.bazartip.atomsoft.cz"/> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="mapItem"> <sequence> <element name="key" nillable="true" type="xsd:anyType"/> <element name="value" nillable="true" type="xsd:anyType"/> </sequence> </complexType> <complexType name="Map"> <sequence> <element maxOccurs="unbounded" minOccurs="0" name="item" type="apachesoap:mapItem"/> </sequence> </complexType> </schema> Mě to přijde zcela shodné jako vaše gSoap s jediným rozdílem, že u klíče a hodnoty není přesně uveden jaký typ tam vlastně bude, což je proto, že Axis 1.3 nepodporuje generické typy. Takže bych viděl jako mnohem snazší cestu upravit to, co Axis vygeneruje. Pořád tomu na první pohled rozumím daleko více než gSoapu.
Je to shodné až na ten typ, a v něm je ten problém. Ten typ je příloš obecný.
Podle mě takto definovaný zápis musí jít použít i třeba v .Netu, jen by se tam na to musela napsat třída která odpovídá mapě a k ní něco co tohle na ní namapuje, ne?
Fakt si přečtete ten článek od IBM, co jsem na něj posílal URL. Teoreticky nemusíte vůbec definovat co ve zprávě bude, můžete říct rovnou na úrovni celé zprávy, že bude xsd:anyType. Ale pak se nemůžete divit, že s takovou službou budou potíže. Protože v ní může být cokoliv, musí implementace serializaátorů a deserializátorů na obou stranách přesně sedět. A jak jste ověřil, ani Axis vůči Axisu přesně nesedí.
Nebo se fakt SOAP používá jen k přenášení základních typů jako String a Integer?
Ne, k přenášení základních typů definovaných v XML Schema, viz http://www.w3.org/TR/xmlschema-2/#built-in-datatypes a složených typů. Ale ty typy nesedí na žádný programovací jazyk.
Já právě myslel, že použít pro přenos jakoukoliv třídu je běžná věc, jen je potřeba napsat něco, co to serializuje do XML a zpětně.
Teoreticky ano, prakticky ne.
Jak jsem psal, potřebuji najednou přenést větší množství položek, jsou to čísla, řetězce a datumové položky. Jak se to v tom případě řeší? Posílá se to po jednom?
Zkuste to jako pole s položkami typu xsd:choice, ve kterém vyjmenujete povolené typy. Makub -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Supercomputing Center Brno Martin Kuba Institute of Computer Science email: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
