QtSoap - Werte aus der SoapMessage filtern

Alles rund um die Programmierung mit Qt
Antworten
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

QtSoap - Werte aus der SoapMessage filtern

Beitrag von Baz »

Hallo,

ich bin gerade dabei mit QtSoap zu arbeiten und stoße dabei auf das Problem, dass ich nicht in der Lage bin auf die in einer Soap Message angelegten Types zuzugreifen.
Im Moment bastel ich mir auf der Serverseite eine Soapmessage zusammen

Code: Alles auswählen

QtSoapSimpleType *type1 = new QtSoapSimpleType(QtSoapQName("key"), 20);
QtSoapSimpleType *type2 = new QtSoapSimpleType(QtSoapQName("value"), 40);
	
QtSoapMessage response;
response.setMethod(QtSoapQName("Response"));
response.addMethodArgument(type1);
response.addMethodArgument(type2);
und schick mir das dann zu meinem Client. Um die Nachricht auszuwerten gehe ich analog zu dem Beispiel von Trolltec vor.

Code: Alles auswählen

soapMessage.setContent(data);
const QtSoapType &res = soapMessage.returnValue();
Jetzt sollte es möglich sein mittels res["Argumentname"] auf die einzelnen Werte zuzugreifen... klappt aber irgendwie nicht. Mit res.toString() bekomme ich den ersten Wert '20' zurückgegeben. res.Valid() gibt brav true zurück... Das doofe an dem Bsp von Trolltec ist, dass Google den SOAP Support eingestellt hat, daran kann ich es nämlich leider nicht mehr nachvollziehen.

Hier noch die produzierte SOAP Message

Code: Alles auswählen

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" >
<SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<Response>
<key xsi:type="xsd:int" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" >20</key>
<value xsi:type="xsd:int" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" >40</value>
</Response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ich wühle mich auch gerade da durch und stehe an vielen Stellen noch auf dem Schlauch. Vielleicht hilft dir das Population-Example, das funktioniert noch und bekommt mehrere Werte zurück. Wenn Du dir dann die Message als Xml-String anzeigen lässt, fällt vielleicht der Groschen, äh Cent :-)
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

es gibt ein Population example? ^^ - kannst du mir dazu mal den Link geben? Da bin ich mal gespannt... :)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

http://trolltech.com/products/qt/addon/ ... es/qtsoap/ :-)
Auf der Seite ist nur das Google-Example, im Archiv sind zwei weitere.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

Lalala... ^^ - hab ich scheinbar verdrängt. Werd ich mir mal anschauen :)
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

Hab mir jetzt mal ne Soapmsg rausgefiltert aus dem Populationbsp:

Code: Alles auswählen

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" >
<SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<getPopulationResponse xmlns="http://www.abundanttech.com/WebServices/Population">
<getPopulationResult xmlns="http://www.abundanttech.com/WebServices/Population">
<Country xmlns="http://www.abundanttech.com/WebServices/Population" xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" >Germany</Country>
<Date xmlns="http://www.abundanttech.com/WebServices/Population" xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" >2007</Date>
<Pop xmlns="http://www.abundanttech.com/WebServices/Population" xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" >82,400,996</Pop>
</getPopulationResult>
</getPopulationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ehrlich gesagt verstehe ich nicht ganz warum um alles in der Welt er meine Sachen nicht versteht - abgesehen davon, dass meine Werte keine URL mitbringen und nicht 2x geschachtelt ist(Response, Result), sind sie doch gleich...
Antworten