![]() |
[PHP. SOAP, WSDL] Fehlerhafte WSDL-Datei?
Ich experimentiere gerade etwas mit SOAP und WSDL, dazu verwende ich PHP. Ich möchte für den Anfang eine einfache Funktion exportieren, die einfach eine Ganzzahl zurückgibt. Und halt das volle Programm mit SOAP und einer WSDL-Datei.
Die beteiligten Dateien: Der PHP-Server:
Code:
Der PHP-Client:
<?php
function getAmount() { return 1.0; } ini_set('soap.wsdl_cache_enabled', "0"); $server = new SoapServer('bierometer.wsdl'); $server->addFunction('getAmount'); $server->handle(); ?>
Code:
Die WSDL-Datei:
?php
ini_set('display_errors', 'on'); echo 'Fange an... '; $client = new SoapClient('bierometer.wsdl'); echo 'Menge: '; echo $client->getAmount(); ?>
XML-Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<definitions name="BierOMeter" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="getAmountResponse"> <part name="Result" type="xsd:float"/> </message> <portType name="BierOMeterPortType"> <operation name="getAmount"> <output message="getAmountResponse"/> </operation> </portType> <binding name="BierOMeterBinding" type="BierOMeterPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getAmount"> <soap:operation soapAction="urn:BierOMeter"/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BierOMeter" use="encoded" /> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BierOMeter" use="encoded" /> </output> </operation> </binding> <service name="BierOMeterService"> <port name="BierOMeterPortType" binding="BierOMeterBinding"> <soap:address location="http://localhost/soap.php"/> </port> </service> </definitions> Beim Aufruf des Clients bekomm ich folgenden Fehler: Zitat:
Als ich testweise die Datei im Visual Studio importieren wollte, klappte das auch nicht (ich weiß den Fehler aber nicht mehr). Ich scließe daraus, dass der Fehler in der WSDL-Datei liegt. Leider bin ich auf dem Gebiet völliger Anfänger und hab mir das da oben alles aus Tutorials gesaugt, sodass ich den Fehler nicht selber finde. Kennt sich hier jemand vielleicht gut damit aus und kann mir einen Tipp geben? Dankeschön! |
Re: [PHP. SOAP, WSDL] Fehlerhafte WSDL-Datei?
Hallo Chewie,
ich bin zwar noch nicht so lange auf diesem Gebiet unterwegs und von daher auch kein Profi, aber schauen wir mal ;o) Probier doch mal bitte bei der Definition deiner Operationen im PortType-Teil auch eine "input"-Message zu definieren. Folgendermaßen:
Delphi-Quellcode:
Muss nicht helfen, kann aber. Ansonsten bin ich dazu übergegangen zuerst die WSDL-Dateien mit Hilfe von geeigneten Editoren zu erstellen
...
<message name="getAmountResponse"> <part name="Result" type="xsd:float"/> </message> <message name="getAmountRequest"> </message> <portType name="BierOMeterPortType"> <operation name="getAmount"> <input message="getAmountRequest" /> <output message="getAmountResponse"/> </operation> </portType> ... und dann den entsprechenden Rest, Top-Down also. Viel Erfolg. |
Re: [PHP. SOAP, WSDL] Fehlerhafte WSDL-Datei?
Zitat:
|
Re: [PHP. SOAP, WSDL] Fehlerhafte WSDL-Datei?
Vielleicht hilft ja
![]() Zitat:
Geht das also doch... Also ein .NET Dienst über PHP zu benutzen.. (PHP v.5 vorausgesetzt) :gruebel: |
Re: [PHP. SOAP, WSDL] Fehlerhafte WSDL-Datei?
@czapie:
Das Hinzufügen des Requests hat nichts geändert. @r_kerber: Mir die WSDL vom VS generieren zu lassen, daran dachte ich schon, speziell nachdem ich gestern ein Tutorial gefunden habe, in dem 3 Projekte verwendet werden: Eines für den Client, eines für den Server (also die Prozeduren) und eines für den "Vertrag" dazwischen. Wäre eine Notlösung. Aber das Tutorial von Jelly sieht natürlich für meine Zwecke vielversprechender aus :) Ich werd mir alles mal ankucken und geb dann feedback, wie's gelaufen ist. |
Re: [PHP. SOAP, WSDL] Fehlerhafte WSDL-Datei?
Oh Mann, ich bin doch doof.... :wall:
Der Fehler ist ganz einfach und dumm:
XML-Code:
<soap:address location="http://localhost/soap.php"/>
Ich hätte hier vielleicht einfach die richtige Adresse angeben sollen :duck: Nun ja, immerhin hab ich jetzt einiges über WSDL gelernt. Danke für eure Zeit! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz