SoapServer mit wsdl Datei
Hallo,
ich versuche ein WebService mit php zuerstellen. Bei der Benutztung mit
meiner wsdl-Datei bekomme ich auf Client aber eine Fehlermeldung
Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Server] Procedure
'eins' not present in E:\www\Apache2\htdocs\wsdl\client.php:7 Stack trace:
#0 [internal function]: SoapClient->__call('add', Array) #1
E:\www\Apache2\htdocs\wsdl\client.php(7): SoapClient->add(Object(SoapParam),
Object(SoapParam)) #2 {main} thrown in E:\www\Apache2\htdocs\wsdl\client.php
on line 7
Zu sehen ist das in http://jew.no-ip.biz/wsdl/
Ich verstehe nicht warum php versucht 'eins' als Procedure zu interpretiren.
Ich hoffe mir kann noch geholfen werden.
Jens
Re: SoapServer mit wsdl Datei
Jens Wichmann schrieb:
> Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Server] Procedure
> 'eins' not present in E:\www\Apache2\htdocs\wsdl\client.php:7 Stack trace:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Wenn Du willst, dass wir Dir helfen, solltest Du dieses PHP-Script hier
posten, damit wir uns die Stelle einmal anschauen können. Ich wüsste
nicht, wie wir Dir sonst helfen können sollen.
Gruß. Claus
Re: SoapServer mit wsdl Datei
> Wenn Du willst, dass wir Dir helfen, solltest Du dieses PHP-Script hier
> posten, damit wir uns die Stelle einmal anschauen können. Ich wüsste
> nicht, wie wir Dir sonst helfen können sollen.
>
> Gruß. Claus
du meinst ich muss den seiten langen code hir rein packen an stelle des
links den ich geschrieben hab?
ok, aber nur die kurzform,
wer das alles sehen will benutzt bitte http://jew.no-ip.biz/wsdl/.
Server.php
------------
<?php
define("wsdlFile", "muster2.wsdl");
$server = new SoapServer(wsdlFile);
$server->setClass('clsTest');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$server->handle();
} else {
switch (strtolower($_SERVER['QUERY_STRING'])){
case 'add':
$d = new clsTest();
echo "<pre>\n1 + 2 = ".htmlentities($d->add(1,2))."</pre>";
break;
case 'welt':
$d = new clsTest();
echo "<pre>".htmlentities($d->getWelt())."</pre>";
break;
case 'wsdl':
header('Content-Type: text/xml');
readfile(wsdlFile);
break;
}
}
class clsTest {
function getWelt() {
return "hallo Welt";
}
function add($eins, $zwei) {
return $eins + $zwei;
}
}
?>
Client.php----------<?php
include("localconfig.inc.php");
$client = new SoapClient("http://jew.no-ip.biz/wsdl/server.php?wsdl",
$login);
$result = $client->add(new SoapParam(1, "eins"), new SoapParam(6, "zwei"));
echo $result."<br>\n";
$result = $client->getWelt();
echo $result."<br>\n";
?>muster2.wsdl-------------<?xml version="1.0" encoding="UTF-8" ?>
<definitions name="MusterWSDL"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="outString">
<part name="text" type="xsd:string"/>
</message>
<message name="inAdd">
<part name="eins" type="xsd:int"/>
<part name="zwei" type="xsd:int"/>
</message>
<message name="outAdd">
<part name="summe" type="xsd:int"/>
</message>
<portType name="WeltType">
<operation name="getWelt">
<output message="outString"/>
</operation>
<operation name="add">
<input message="inAdd"/>
<output message="outAdd"/>
</operation>
</portType>
<binding name="WeltBind" type="WeltType">
<soap:binding style="rcp" transport="http://schemas.xmlsoap.org/soap/http"
/>
<operation name="getWelt">
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="add">
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="WeltService">
<port binding="WeltBind" name="FilmServices">
<soap:address location="http://jew1/wsdl/server.php"/>
</port>
</service>
</definitions>
Re: SoapServer mit wsdl Datei
Entschuldigt bitte das durcheinander aber ich hab momentan leider nur ein
ungepatchtes outlook express zur Verfügung.
Jens
Re: SoapServer mit wsdl Datei
Jens Wichmann schrieb:
>> Wenn Du willst, dass wir Dir helfen, solltest Du dieses PHP-Script hier
>> posten, damit wir uns die Stelle einmal anschauen können. Ich wüsste
>> nicht, wie wir Dir sonst helfen können sollen.
>
> du meinst ich muss den seiten langen code hir rein packen an stelle des
> links den ich geschrieben hab?
Nicht jeder, der Newsgroups liest, hat auch direkten Zugang zum Web. Von
daher ist es grundsätzlich besser, den fraglichen Text hier zu posten.
Nichtsdestotrotz hatte ich die Links auf den Quelltext schlicht
übersehen. Sorry.
> ok, aber nur die kurzform,
> [...]
>
> Client.php----------<?php
> include("localconfig.inc.php");
> $client = new SoapClient("http://jew.no-ip.biz/wsdl/server.php?wsdl",
> $login);
> $result = $client->add(new SoapParam(1, "eins"), new SoapParam(6, "zwei"));
An dieser verstümmelten "Kurzform" (was daran kurz sein soll, ist mir
schleierhaft) ist leider nicht zu erkennen, dass die letzte Zeile die
fehlerverursachende Zeile 7 darstellt. Anhand der geposteten Links
konnte ich das immerhin noch ermitteln.
Ansonsten sind jetzt die Soap-Experten gefragt. Da gehöre ich leider
nicht zu :-)
Gruß. Claus
Re: SoapServer mit wsdl Datei
* Jens Wichmann wrote:
> $client = new SoapClient("http://jew.no-ip.biz/wsdl/server.php?wsdl",
> $login);
> $result = $client->add(new SoapParam(1, "eins"), new SoapParam(6, "zwei"));
Dort tritt dein Fehler offensichtlich auf.
Erstmal würde ich alles in ein try/catch packen:
try {
[...]
} catch (SoapFault $fault) {
echo "SOAP Error: ".$fault->faultcode." : ".$fault->faultstring;
}
Und teste mal einfach:
$result=$client->add(1, 2);
G.
--
BM Computer-Services, Bergmannstr. 66, 10961 Berlin
Webdesign, Internet, Layout und Grafik
Tel.: 030/20649400, mobil 0175/7419517, Fax: 030/20649401
Web: http://www.bmservices.de, eMail: kontakt [at] bmservices.de
Re: SoapServer mit wsdl Datei
> > $result =3D $client->add(new SoapParam(1, "eins"), new SoapParam(6, "zwe=
i"));
>
> Dort tritt dein Fehler offensichtlich auf.
ok
> Erstmal würde ich alles in ein try/catch packen:
hab ich gemacht das ergebniss ist die gleiche Meldung in anderer form
SOAP Error: SOAP-ENV:Server : Procedure 'eins' not present
ich glaube in zwichen auch das es sich um ein SOAP Problem handelt.
Aber jemand zu finden der alle kann (php, soap, wsdl) dürfte nicht so
einfach sein.
Jens
Re: SoapServer mit wsdl Datei
Am Fri, 4 Jan 2008 11:39:31 +0100 schrieb Jens Wichmann:
Hallo,
etwas generelles. Wenn Du vorhast, mehr mit SOAP zu machen,
könnte das evtl- interessant für dich sein:
http://www.osoa.org/display/PHP/SOA+PHP+Homepage
Viele Grüsse
Stefan