php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.08.2010, 18:18  
Neuer Benutzer
 
Benutzerbild von Partyschaum
 
Registriert seit: 16.08.2010
Beiträge: 11
PHP-Kenntnisse:
Fortgeschritten
Partyschaum befindet sich auf einem aufstrebenden Ast
Partyschaum eine Nachricht über ICQ schicken
Standard [Erledigt] Probleme mit SoapHeader ["Header not understood"]

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:

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>
Der "SOAP-Server":

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->setPersistenceSOAP_PERSISTENCE_SESSION );
$server->handle();

?>
Mein Test-Client:

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$authDataSOAP_ENC_OBJECT );

$header = new SoapHeader'http://bishop.localhost/soap/''authenticate'$headerDatatrue );

$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 );

?>
Partyschaum ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.08.2010, 19:30  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Welche Zeile im Code meldet Header not understood? Wie lauten die Header?

error_reporting() auf E_ALL | E_STRICT?
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online   Mit Zitat antworten
Alt 17.08.2010, 10:09  
Neuer Benutzer
 
Benutzerbild von Partyschaum
 
Registriert seit: 16.08.2010
Beiträge: 11
PHP-Kenntnisse:
Fortgeschritten
Partyschaum befindet sich auf einem aufstrebenden Ast
Partyschaum eine Nachricht über ICQ schicken
Standard

Moin,

die Meldung kommt aus der Exception SoapFault $f->GetMessage() sobald der Client die Methode getAngeboteDataByAttribute() aufruft.

Das vom Client generierte XML sieht folgendermaßen aus:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:ns1="urn:STVM"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:ns2="http://www.##########/soap/"
	xmlns:ns3="urn:http://www.##########/soap/"
	xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
	SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	
	<SOAP-ENV:Header>
		<ns3:authenticate>
			<username>hauke</username>
			<password>geheim</password>
		</ns3:authenticate>
	</SOAP-ENV:Header>
	
	<SOAP-ENV:Body>
	
		<ns1:getAngeboteDataByAttribute>
			
			<searchFields xsi:type="ns2:ArrayOfSearchFieldType">
				<ArrayOfSearchFields xsi:type="ns2:SearchFieldType">
					<fieldName xsi:type="xsd:string">uad_traeger_pattern</fieldName>
					<fieldValue xsi:type="xsd:string">kirche</fieldValue>
				</ArrayOfSearchFields>
			</searchFields>
			
			<resultFields xsi:type="ns2:ArrayOfResultFieldType">
				<ArrayOfResultFields xsi:type="xsd:string">uad_einrichtungname</ArrayOfResultFields>
				<ArrayOfResultFields xsi:type="xsd:string">uad_einrichtungart</ArrayOfResultFields>
			</resultFields></ns1:getAngeboteDataByAttribute>
			
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Partyschaum ist offline   Mit Zitat antworten
Alt 17.08.2010, 22:15  
Neuer Benutzer
 
Benutzerbild von Partyschaum
 
Registriert seit: 16.08.2010
Beiträge: 11
PHP-Kenntnisse:
Fortgeschritten
Partyschaum befindet sich auf einem aufstrebenden Ast
Partyschaum eine Nachricht über ICQ schicken
Standard

So, der Vollständigkeit halber...

Ich habe das Problem heute gelöst bzw. die Ursache für die Fehlermeldung gefunden. Ansatzpunkt war natürlich die Tatsache, dass es auf meinem Entwicklungssystem (PHP 5.3.3) tadellos funktioniert und beim Kunden (PHP 5.3.2) so überhaupt nicht.

Im Nachhinein macht die Fehlermeldung "Header not understood" so auch richtig Sinn...

Wenn man - so wie ich es zuerst auch getan habe - einen Methodenaufruf (zwecks Authentifizierung) und seine Parameter mittels SoapHeader an den SoapServer übergibt, muss dafür eigentlich die aufzurufende Funktion nicht in der WSDL-Datei angegeben sein.

Setzt man die Methode jedoch mit <message> Signatur, <porttype> Definition und Binding in die WSDL akzeptiert der SoapServer den Aufruf über den Header problemlos.

Folgendes sei hier noch angemerkt... (war mir vorher nicht so klar)

Der SoapServer läuft auf zwei Arten. Entweder im WSDL-Modus oder im NON-WSDL Modus:

PHP-Code:
// WSDL Modus
$server = new SoapServer 'uri://zur/wsdl/datei/'$options );

// NON-WSDL Modul
$options = array( 'uri' => 'uri://zum/php/SoapService.php' );
$server = new SoapServer null$options ); 
Das Problem tritt nur im WSDL-Modus auf. Letzteren möchte man aber meistens nutzen da es schon angenehm ist, wenn der SoapServer die übergebenen Werte gemäß der Spezifikationen aus der WSDL-Datei bekommt.

HF & GL
Partyschaum ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Word Lollix Off-Topic Diskussionen 2 26.03.2010 11:52
CHarset und Probleme mit IE KeKs0r HTML, Usability und Barrierefreiheit 10 26.01.2010 21:59
[Erledigt] fopen() Probleme jN^ PHP Tipps 2009 2 18.08.2009 12:31
[Erledigt] Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
Win+Firefox alles ok, IE oder Linux: Probleme vollderdude PHP Tipps 2009 6 02.01.2009 16:17
[Erledigt] Probleme mit iFrame rocco HTML, Usability und Barrierefreiheit 1 28.12.2008 17:44
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
Probleme mit Sonderzeichen... Datenbanken 1 02.08.2005 23:37
[Erledigt] hilfe! probleme mit... PHP Tipps 2005 4 12.04.2005 22:55
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
[Erledigt] Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
soap header action was not understood, soap header action was not understood., soap header not understood, php soap header, php 5.3 und soap, php soapserver header not understood, php soap wsdl xml xsd:sequence, http://www.php.de/php-fortgeschrittene/70830-erledigt-probleme-mit-soapheader-header-not-understood.html, soap-enc:array, php soapheader, php soap header wsdl, soap header to was not understood, \header not understood\ soapserver, \header not understood\ php, soap header action not understood, soap header action, clnt not understood, \header not understood\, soap header php password, soap php wsdl soap-env xml

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum