Ahoy!
Ich kämpfe mit einem vielleicht seltsam anmutenden Problem, brauche aber trotzdem eine Lösung und komme einfach nicht weiter.
Situtation:
- ein Server, auf dem ein IIS als Webserver "schnarchhahn" läuft.
- auf diesem Rechner eine DLL, die über das SOAP-Toolkit als Webservice verfügbar gemacht wurde.
- Zu diesem Webservice gibt es eine WSDL (s.u.)
- ein zweiter Server mit Apache als Webserver "obelix" läuft.
- ein PHP-Skriptauf "obelix", das den Webservice auf "schnarchhahn" über SOAP nutzen soll.
Das klappt soweit problemlos, wenn ich die WSDL (s.u.) nutze:
Und nun der Haken an der Sache: obwohl es eine WSDL-Datei gibt, soll der Service auch direkt und ohne Verwendung der WSDL-Datei genutzt werden können. Mein bisheriger Versuch fliegt auf die Schnauze:
Antwort des SOAP-Servers auf "schnarchhahn":
"WSDLReader:None of the matching operations for soapAction http://schnarchhahn/SoapServices/Try/action/clsWS.Init could successfully load the incoming request. Potential typemapper problem"
Wo vergesse/übersehe ich was?
Oder wo hakt es bei mir am generellen Verständnis?
Mir ist nämlich auch irgendwie nicht so ganz klar, was diese Option-Arrays beim Erzeugen des Clients und beim Call selbst so alles zu sagen haben
Kann / mag mir bitte jemand einen Tipp geben?
Herzlichen Dank im Voraus!
Hier der Vollständigkeit halber die WSDL-Datei:
Gruß, Ich
Ich kämpfe mit einem vielleicht seltsam anmutenden Problem, brauche aber trotzdem eine Lösung und komme einfach nicht weiter.
Situtation:
- ein Server, auf dem ein IIS als Webserver "schnarchhahn" läuft.
- auf diesem Rechner eine DLL, die über das SOAP-Toolkit als Webservice verfügbar gemacht wurde.
- Zu diesem Webservice gibt es eine WSDL (s.u.)
- ein zweiter Server mit Apache als Webserver "obelix" läuft.
- ein PHP-Skriptauf "obelix", das den Webservice auf "schnarchhahn" über SOAP nutzen soll.
Das klappt soweit problemlos, wenn ich die WSDL (s.u.) nutze:
PHP Code:
<?php
$client = new SoapClient( 'http://schnarchhahn/SoapServices/Try/wsTry.wsdl', array('exceptions' => 0, 'cache_wsdl'=>WSDL_CACHE_NONE) );
$result = $client->ReturnLong($_POST['var0'])
?>
PHP Code:
<?php
$client = new SoapClient( NULL,
array (
"location" => $strAdr['asp'],
"uri" => "http://schnarchhahn/SoapServices/Try/message/",
"style" => SOAP_RPC,
"use" => SOAP_ENCODED,
'exceptions' => 0
)
);
$parameters = array (
new SoapParam($_POST['var0'], 'pi_lLong')
);
$result = $client->__call ( "ReturnLong",
array("parameters" => $parameters),
array (
"uri" => "http://schnarchhahn/SoapServices/Try/message/",
"soapaction" => "http://schnarchhahn/SoapServices/Try/action/clsWS.Init"
)
);
?>
"WSDLReader:None of the matching operations for soapAction http://schnarchhahn/SoapServices/Try/action/clsWS.Init could successfully load the incoming request. Potential typemapper problem"
Wo vergesse/übersehe ich was?
Oder wo hakt es bei mir am generellen Verständnis?
Mir ist nämlich auch irgendwie nicht so ganz klar, was diese Option-Arrays beim Erzeugen des Clients und beim Call selbst so alles zu sagen haben
Kann / mag mir bitte jemand einen Tipp geben?
Herzlichen Dank im Voraus!
Hier der Vollständigkeit halber die WSDL-Datei:
Code:
<!-- Generated 12/10/08 by Microsoft SOAP Toolkit WSDL File Generator, Version 3.00.1325.0 --> <definitions name='wsTry' targetNamespace='http://schnarchhahn/SoapServices/Try/wsdl/' xmlns:wsdlns='http://schnarchhahn/SoapServices/Try/wsdl/' xmlns:typens='http://schnarchhahn/SoapServices/Try/type/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:stk='http://schemas.microsoft.com/soap-toolkit/wsdl-extension' xmlns:dime='http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/' xmlns:ref='http://schemas.xmlsoap.org/ws/2002/04/reference/' xmlns:content='http://schemas.xmlsoap.org/ws/2002/04/content-type/' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' xmlns='http://schemas.xmlsoap.org/wsdl/'> <types> <schema targetNamespace='http://schnarchhahn/SoapServices/Try/type/' xmlns='http://www.w3.org/2001/XMLSchema' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' elementFormDefault='qualified'> <import namespace='http://schemas.xmlsoap.org/soap/encoding/'/> <import namespace='http://schemas.xmlsoap.org/wsdl/'/> <import namespace='http://schemas.xmlsoap.org/ws/2002/04/reference/'/> <import namespace='http://schemas.xmlsoap.org/ws/2002/04/content-type/'/> </schema> </types> <message name='clsWS.ReturnLong'> <part name='pi_lLong' type='xsd:int'/> </message> <message name='clsWS.ReturnLongResponse'> <part name='Result' type='xsd:int'/> </message> <portType name='clsWSSoapPort'> <operation name='ReturnLong' parameterOrder='pi_lLong'> <input message='wsdlns:clsWS.ReturnLong'/> <output message='wsdlns:clsWS.ReturnLongResponse'/> </operation> </portType> <binding name='clsWSSoapBinding' type='wsdlns:clsWSSoapPort' > <stk:binding preferredEncoding='UTF-8'/> <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='ReturnLong'> <soap:operation soapAction='http://schnarchhahn/SoapServices/Try/action/clsWS.ReturnLong'/> <input> <soap:body use='encoded' namespace='http://schnarchhahn/SoapServices/Try/message/' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' parts='pi_lLong'/> </input> <output> <soap:body use='encoded' namespace='http://schnarchhahn/SoapServices/Try/message/' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' parts='Result'/> </output> </operation> </binding> <service name='wsTry' > <port name='clsWSSoapPort' binding='wsdlns:clsWSSoapBinding' > <soap:address location='http://schnarchhahn/SoapServices/Try/wsTry.ASP'/> </port> </service> </definitions>