Mircot
Mitglied
Hallo,
ich versuche mich seit Tagen in SOAP Webservices mit PHP einzuarbeiten. Die allgemeinen Hürden habe ich überwunden und einen einfachen Webservice erstellt.
Nun habe ich zu der einen Methode noch eine weitere hinzugefügt. Da bekomm ich immer beim aufruf mit C# folgende Fehlermeldung:
System.Web.Services.Protocols.SoapHeaderException: Procedure 'SetConfig' not present
Durch das WSDL wird der Webservice einwandfrei ins VisualStudio Projek integriert und die erste ethode funktioniert auch, nur die zweite nicht.
Das WSDL sieht folgendermaßen aus:
Ich kann mir nicht erklären, warum ich beim Aufrufen der Zweiten Methode, diese nicht finde.
Internetsuche hat ergeben, dass ich soap.wsdl_cache_enabled=0 setzen soll. Das habe ich getan aber es hat sich nichts geändert.
Kann jemand helfen?
ich versuche mich seit Tagen in SOAP Webservices mit PHP einzuarbeiten. Die allgemeinen Hürden habe ich überwunden und einen einfachen Webservice erstellt.
Nun habe ich zu der einen Methode noch eine weitere hinzugefügt. Da bekomm ich immer beim aufruf mit C# folgende Fehlermeldung:
System.Web.Services.Protocols.SoapHeaderException: Procedure 'SetConfig' not present
Durch das WSDL wird der Webservice einwandfrei ins VisualStudio Projek integriert und die erste ethode funktioniert auch, nur die zweite nicht.
PHP:
<?php
include("connect.php");
include("wsfunction.php");
$SOAPServer = new SoapServer("WebService.wsdl");
$SOAPServer->addFunction(array("GetConfigValue", "SetConfig"));
$SOAPServer->handle();
function GetConfigValue($Logincode, $ValueName)
{
try
{
global $conn;
$Abfrage = mysql_query("select Value from sys_properties where Name = '$ValueName'");
LogMessage(mysql_error());
while($Daten = mysql_fetch_array($Abfrage))
{
return $Daten[Value];
}
return null;
}
catch (Exception $e)
{
LogMessage($e);
}
}
function SetConfig($Logincode, $ValueName, $Value)
{
try
{
global $conn;
$Abfrage = mysql_query("update sys_properties set Value = '$Value' where Name = '$ValueName'");
LogMessage(mysql_error());
}
catch (Exception $e)
{
LogMessage($e);
}
}
?>
Code:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions name="MyWebService" targetNamespace="http://localhost/ws/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://localhost/ws/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:message name="GetSysConfigRequest">
<wsdl:part name="LoginCode" type="xsd:String"></wsdl:part>
<wsdl:part name="ConfigName" type="xsd:String"></wsdl:part>
</wsdl:message>
<wsdl:message name="GetSysConfigResponse">
<wsdl:part name="Value" type="xsd:String"></wsdl:part>
</wsdl:message>
<wsdl:message name="SetConfigRequest">
<wsdl:part name="LoginCode" type="xsd:String"></wsdl:part>
<wsdl:part name="ConfigName" type="xsd:String"></wsdl:part>
<wsdl:part name="ConfigValue" type="xsd:String"></wsdl:part>
</wsdl:message>
<wsdl:portType name="ConfigPortType">
<wsdl:operation name="GetConfigValue">
<wsdl:input message="tns:GetSysConfigRequest"></wsdl:input>
<wsdl:output message="tns:GetSysConfigResponse"></wsdl:output>
</wsdl:operation>
<wsdl:operation name="SetConfig">
<wsdl:input message="tns:SetConfigRequest"></wsdl:input>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ConfigBinding" type="tns:ConfigPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="GetConfigValue">
<soap:operation soapAction="http://localhost/ws/GetConfigValue" />
<wsdl:input>
<soap:body use="literal" namespace="http://localhost/ws/" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="http://localhost/ws/" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SetConfig">
<soap:operation soapAction="http://localhost/ws/SetConfig" />
<wsdl:input>
<soap:body use="literal" namespace="http://localhost/ws/" />
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ConfigValuesWebservice">
<wsdl:port name="ConfigWebservicePort" binding="tns:ConfigBinding">
<soap:address location="http://localhost/OnlineShop/enwicklung/services/webservice.php"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Internetsuche hat ergeben, dass ich soap.wsdl_cache_enabled=0 setzen soll. Das habe ich getan aber es hat sich nichts geändert.
Kann jemand helfen?