| 

.NET C# Java Javascript Exception

3
Hallo, allgemeine Frage zu Soap..Ich stelle eine Anfrage an einen Webservice, der im WSDL modus arbeitet...es treten auch keine Fehler auf aber ich kriege einen falschen Response.Die messages in der wsdl sehen wie folgt aus...Die Daten kommen auch in der Methode an, nur ist der Response falsch! Ich bekomme als Response nur folgendes zurück:
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><CheckInOutput>1</CheckInOutput></SOAP-ENV:Body></SOAP-ENV:Envelope>

<types>
<xsd:element name="CheckInOutputmsg">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Status" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</element>
<xsd:element name="CheckInInputmsg">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Club" type="xsd:string"/>
<xsd:element name="CheckIn" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Nr" type="xsd:unsignedInt"/>
<xsd:element name="FromClub" type="xsd:string"/>
<xsd:element name="Knr" type="xsd:unsignedInt"/>
<xsd:element name="Datum" type="xsd:dateTime"/>
<xsd:element name="Eintritt" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
....
</types>
<wsdl:message name="CheckInRequest">
<wsdl:part name="CheckInInput" element="tns:CheckInInputmsg" />
</wsdl:message>
<wsdl:message name="CheckInResponse">
<wsdl:part name="CheckInOutput" element="tns:CheckInOutputmsg" />
</wsdl:message>

Wo könnte das Problem liegen...
Die Funktion im Webservice sieht wie folgt aus:
function CheckIn($data)
{
$file = fopen('CheckIn.txt', 'a');
fwrite($file, $data->Club . ', ' . $data->Check->Nr);
fclose($file);
//return 1;
return new SoapParam(1,'CheckInOutput');
}
21.11.2011
alex85 70 1 5
1 Antwort
1
Das Problem liegt beim Server, der die SOAP-Response nicht so zusammenbaut, wie es laut WSDL sein sollte. Mehr läßt sich aus Deinen Angaben nicht herleiten, fürchte ich.

Du hast mittlerweile 5 unbeantwortete Fragen, die sich alle im gleichen Kontext zu bewegen scheinen, aber (zumindest für mich) alle ziemlich unklar bleiben hinsichtlich dessen, was Du da treibst und worauf Du hinaus willst. Vielleicht beschreibst Du Deine Aufgabenstellung mal etwas ausführlicher und präziser (was z.B. meinst Du mit "im WSDL-Modus arbeitet"?), dann können wir Dir vielleicht auch besser helfen. Stelle dazu eine neue Frage oder editiere eine Deiner schon gestellten Fragen.

Update:
Mit Blick auf Dein Code-Beispiel: SoapParam ist gedacht, um einen Parameter für einen Soap-Serviceaufruf zu erzeugen, ist also für den Request und nicht wie bei Dir für die Response vorgesehen. Eine CheckInOutputmsg, die Du laut Deiner WSDL bräuchtest, wirst Du damit nicht erzeugen können.
21.11.2011
Matthias Hlawatsch 13,2k 4 9
hallo, wsdl-modus heißt, das die Typen beschreibung und der die Beschreibung des Webservices in der wsdl festgelegt wird...
alex85 21.11.2011
"festegelegt wird" ist auch schon wieder so schwammig. Jede WSDL legt die Definition der verwendeten Datentypen und Nachrichten fest, nur dafür ist sie da. Oder wolltest Du sagen, dass aus der WSDL Code generiert wird, der die Daten und Operationen des Service repräsentiert? Dann wäre es sehr hilfreich, Du würdest ein paar Angaben zur Plattform und zu den verwendeten Bibliotheken machen. Ich kann aus Deinem Code-Beispiel VERMUTEN, dass es sich um PHP handelt, mehr aber auch nicht.
Matthias Hlawatsch 21.11.2011
richtig es handelt sich hier um die php SOAP-extension, doch irgendwie ist es so als ob der Server und Client es gar nicht warnehmen, das es eine WSDL Datei gibt...
alex85 21.11.2011

Stelle deine Soap-Frage jetzt!