Hallo,
ich mache gerade meine ersten Versuche mit Webservices/Soap.
Folgendes habe ich zum Testen vor:
Ich habe einen Soap-Server in Perl auf meinem Webserver. Per Javascript möchte ich nun aus einer Webseite heraus diesen Soap-Server ansprechen.
Mein "Soap-Server" mit Namen "/cgi-bin/soap/hello.pl" nutzt SOAP::Lite und sieht folgendermaßen aus:
use strict;
use SOAP::Transport::HTTP;
#use Demo;
SOAP::Transport::HTTP::CGI
-> dispatch_to('Demo')
-> handle;
package Demo;
# -- SOAP::Lite -- guide.soaplite.com -- Copyright (C) 2001 Paul Kulchenko --
sub echo {
return @_[1];
}
sub hi {
return "hello, world";
}
sub bye {
return "goodbye, cruel world";
}
1;
Mit einem Perl Soap-Client kann ich diesen auch ansprechen, funktioniert also schonmal.
Um per Javascript auf diesen Dienst zuzugreifen habe ich mir das hier angeschaut:
http://www.guru4.net/articoli/javascript-soap-client/en/
Dieses verlangt einmal eine WSDL-Datei auf dem Server.
Diese habe ich mir erstellt (ich hoffe es ist soweit richtig, ziemlich konfus das Ganze) und auf meinen Webserver geladen.
Nun versucht dieser Javascript-Soap-Client jedoch die WSDL aus einer bestimmten URL per GET zu laden:
xmlHttp.open("GET", url + "?wsdl", async);
Meine Testwebseite hat einen Button mit dem ich hi() aufrufen möchte:
<script type="text/javascript">
var url = "http://vortex//cgi-bin/soap/hello";
function HelloWorld()
{
var pl = new SOAPClientParameters();
SOAPClient.invoke(url, "hi", pl, true, HelloWorld_callBack);
}
function HelloWorld_callBack(r)
{
alert(r);
}
</script>
<h2>DEMO 1: "Hello World!"</h2>
<p>Say Hello World</p>
<input type="button" value="Say "Hello world"" onclick="HelloWorld();" />
Das Problem ist die url. Wie soll das denn funktionieren?
Muss mein Perl-Script auf dem Server noch auswerten, ob es die WSDL-Datei zurückliefern oder die Soap-Anfrage beantworten soll?
Ich bin im Moment etwas verwirrt, ich hoffe hier kann einer Licht ins Dunkel bringen.
Danke und Gruß
Thomas