Thread WSDL (53 answers)
Opened by bianca at 2010-05-22 16:12

Gast Rainer
 2010-05-21 18:12
#137503 #137503
2010-05-21T15:12:56 bianca
Das löst beim Anbieter leider nicht den Prozess aus, den es soll, weil im Request <params xsi:nil="true" xsi:type="tns:Map" /> leer ist, obwohl dort "DE" rein gehören sollte laut Anbieter.

Mit einem PHP SOAP Client funktioniert es wie gewünscht.
Wir sind nun nicht sicher, ob das am Perl SOAP Client liegt oder am Konstrukt des Anbieters.
Ob da ein paar geübte Augen mal mitschauen würden?

Danke Euch



Hallo! Ich bin der Anbieter.

Hier ist der XML-Request, der vom (funktionierenden) PHP-Skript erzeugt wird:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://ssl.ibanrechner.de/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body>

<ns1:get_form>
<params xsi:type="ns2:Map">
<item><key xsi:type="xsd:string">country</key>
<value xsi:type="xsd:string">DE</value>
</item>
</params>
<user xsi:type="xsd:string">einbenutzername</user><password xsi:type="xsd:string">einpasswort</password></ns1:get_form></SOAP-ENV:Body></SOAP-ENV:Envelope>


Und hier der Request von SOAP::Lite (ohne "DE"):
Code: (dl )
1
2
3
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 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" xmlns:tns="https://ssl.ibanrechner.de/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><tns:get_form>
<params xsi:nil="true" xsi:type="tns:Map" />
<user xsi:type="xsd:string">blabla</user><password xsi:type="xsd:string">blablapass</password></tns:get_form></SOAP-ENV:Body></SOAP-ENV:Envelope>


Also, der erste Parameter namens "params" wird vom PHP-Client gefüllt, vom Perl-Client dagegen nicht.

Liegt es vielleicht an der vom oben verwendeten Tool monierten fehlenden Definition des Map-Typs (der erste Parameter ist eine Map)? Wie müsste sowas aussehen? und wie würde ich die beiden Clients dazubringen, beide "ns2:Map" statt "tns:Map" zu nehmen, oder den Typ wenigstens gleich zu nennen?
Last edited: 2010-05-21 18:17:40 +0200 (CEST)

View full thread WSDL