Moin,
ich sitze seit einigen Tagen an der Realisierung eines SOAP-Webservices. Die WSDL-Datei validiert und meine geschriebenen Klassen funktionieren auf dem lokalen Entwicklungssystem einwandfrei.
Vorhin habe ich den Service dann zum Kunden migriert und bekomme nun vom SoapClient folgende Meldung: Header not understood
Die Unterschiede zwischen Entwicklungssystem und Kundensystem sind eigentlich marginal. Bei mir läuft PHP in der Version 5.3.3 und beim Kunden in 5.3.2. Die installierten und geladenen Extensions (insbesondere natürlich SOAP) sind dieselben.
Vielleicht findet ja einer von Euch den Fehler oder hat eine Problemlösung parat... ich bin für jeden noch so kleinen Tipp dankbar. Wirklich dankbar!
An den Stellen im Code wo bishop.localhost steht, befindet sich eigentlich natürlich die entsprechend korrekte URI / URL des Kundensystems... nur um Schnellschüssen vorzubeugen.
Beste Grüße aus Kiel,
der Hauke
Meine WSDL-Datei:
Der "SOAP-Server":
Mein Test-Client:
ich sitze seit einigen Tagen an der Realisierung eines SOAP-Webservices. Die WSDL-Datei validiert und meine geschriebenen Klassen funktionieren auf dem lokalen Entwicklungssystem einwandfrei.
Vorhin habe ich den Service dann zum Kunden migriert und bekomme nun vom SoapClient folgende Meldung: Header not understood
Die Unterschiede zwischen Entwicklungssystem und Kundensystem sind eigentlich marginal. Bei mir läuft PHP in der Version 5.3.3 und beim Kunden in 5.3.2. Die installierten und geladenen Extensions (insbesondere natürlich SOAP) sind dieselben.
Vielleicht findet ja einer von Euch den Fehler oder hat eine Problemlösung parat... ich bin für jeden noch so kleinen Tipp dankbar. Wirklich dankbar!
An den Stellen im Code wo bishop.localhost steht, befindet sich eigentlich natürlich die entsprechend korrekte URI / URL des Kundensystems... nur um Schnellschüssen vorzubeugen.
Beste Grüße aus Kiel,
der Hauke
Meine WSDL-Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="StvmDefinitions" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://bishop.localhost/soap/" targetNamespace="http://bishop.localhost/soap/"> <wsdl:documentation> WSDL Schnittstellenbeschreibung für die XXXXXXXXXX. </wsdl:documentation> <wsdl:types> <xsd:schema targetNamespace="http://www.bishop.localhost/soap/"> <xsd:complexType name="ResultFieldType"> <xsd:sequence> <xsd:element name="resultField" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ArrayOfResultFieldType"> <xsd:sequence> <xsd:element name="ArrayOfResultFields" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="SearchFieldType"> <xsd:sequence> <xsd:element name="fieldName" type="xsd:string"/> <xsd:element name="fieldValue" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ArrayOfSearchFieldType"> <xsd:sequence> <xsd:element name="ArrayOfSearchFields" type="tns:SearchFieldType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="FoundRowArrayType"> <xsd:complexContent> <xsd:restriction base="SOAP-ENC:Array"> <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="SOAP-ENC:arrayType[]"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:schema> </wsdl:types> <message name="getAnbieterDataByAttributeRequest"> <part name="searchFields" type="tns:ArrayOfSearchFieldType"/> <part name="resultFields" type="tns:ArrayOfResultFieldType"/> </message> <message name="getAnbieterDataByAttributeResponse"> <part name="getAnbieterDataByAttributeReturn" type="tns:FoundRowArrayType"/> </message> <message name="getAngeboteDataByAttributeRequest"> <part name="searchFields" type="tns:ArrayOfSearchFieldType"/> <part name="resultFields" type="tns:ArrayOfResultFieldType"/> </message> <message name="getAngeboteDataByAttributeResponse"> <part name="getAngeboteDataByAttributeReturn" type="tns:FoundRowArrayType"/> </message> <wsdl:portType name="StvmDBPortType"> <wsdl:operation name="getAnbieterDataByAttribute"> <wsdl:input message="tns:getAnbieterDataByAttributeRequest"/> <wsdl:output message="tns:getAnbieterDataByAttributeResponse"/> </wsdl:operation> <wsdl:operation name="getAngeboteDataByAttribute"> <wsdl:input message="tns:getAngeboteDataByAttributeRequest"/> <wsdl:output message="tns:getAngeboteDataByAttributeResponse"/> </wsdl:operation> </wsdl:portType> <binding name="StvmDBBinding" type="tns:StvmDBPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getAnbieterDataByAttribute"> <soap:operation soapAction="urn:STVM#getAnbieterDataByAttribute"/> <wsdl:input> <soap:body use="encoded" namespace="urn:STVM" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </wsdl:input> <wsdl:output> <soap:body use="encoded" namespace="urn:STVM" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getAngeboteDataByAttribute"> <soap:operation soapAction="urn:STVM#getAngeboteDataByAttribute"/> <wsdl:input> <soap:body use="encoded" namespace="urn:STVM" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </wsdl:input> <wsdl:output> <soap:body use="encoded" namespace="urn:STVM" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </wsdl:output> </wsdl:operation> </binding> <wsdl:service name="StvmService"> <wsdl:port name="StvmDBPort" binding="tns:StvmDBBinding"> <soap:address location="http://bishop.localhost/soap/StvmServer.php"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
PHP-Code:
<?php
require_once 'StvmConfig.php';
require_once 'StvmDB.class.php';
ini_set( 'display_errors', 'on' );
$options = array( 'uri' => SOAP_URI );
$server = new SoapServer( 'StvmService.wsdl', $options );
$server->setClass( 'StvmDB' );
$server->setPersistence( SOAP_PERSISTENCE_SESSION );
$server->handle();
?>
PHP-Code:
<?php
ini_set( 'display_errors', 'on' );
$options = array(
'cache_wsdl' => WSDL_CACHE_NONE,
'trace' => 1,
);
class authDataClass {
public $username;
public $password;
public function __construct( $username, $password ) {
$this->username = $username;
$this->password = $password;
}
};
$authData = new authDataClass( 'hauke', 'geheim' );
$wsdlFile = 'http://bishop.localhost/soap/StvmService.wsdl';
$headerData = new SoapVar( $authData, SOAP_ENC_OBJECT );
$header = new SoapHeader( 'http://bishop.localhost/soap/', 'authenticate', $headerData, true );
$client = new SoapClient( $wsdlFile );
$client->__setSoapHeaders( $header );
$searchFields = array(
array( 'fieldName' => 'uad_traeger_pattern', 'fieldValue' => 'kirche' ),
array( 'fieldName' => 'uad_einrichtungart', 'fieldValue' => 'Kirche' ),
);
$responseFields = array(
'uad_einrichtungname', 'uad_einrichtungart'
);
try {
$res = $client->getAngeboteDataByAttribute( $searchFields, $responseFields );
} catch ( SoapFault $f ) {
echo "\nTrace: " . print_r( $f->getTrace(), true );
echo "\nMessage: " . print_r( $f->getMessage(), true );
echo "\nCode: " . print_r( $f->getCode(), true );
}
echo "\nErgebnis der Anfrage: \n";
print_r( $res );
?>
Kommentar