weissbiersepp Geschrieben 18. Mai 2011 Geschrieben 18. Mai 2011 Hallo Community Ich habe ein Problem bei der Übergabe eines Parameters und bräuchte dringend Hilfe. Ich verwende NuSOAP 0.9.5 und bei der Übergabe von Selbstdefinierten Typen habe ich immer Probleme Hier der Aufruf vom PHP aus: $this->m_service = new nusoap_client($sEndpoint, 'wsdl',$proxyhost, $proxyport, $proxyusername, $proxypassword); $this->m_result = $this->m_service->call('getServiceProvider', array('serviceProviderID' => 'GER00020060042540116', 'inputSPServiceAccess' => array('addAddress' => TRUE, 'addDescriptions'=>FALSE, 'addFeatures'=>FALSE,'addDataClassAttributes'=>FALSE,'addMultimedia'=>FALSE,'addMultimediaURLS'=>FALSE,'addLocations'=>FALSE,'imageWidth' => 320, 'imageHeight' => 160,'addExternalOnlineServices'=>FALSE), 'languageCode' => $this->m_languageCode, 'sessionID' => $this->m_sessionID )); Bei der Übergabe des 2. Parameters habe ich Probleme. Andere Funktionen, die nur mit den Standarddefinierten Typen aufgerufen werden, funktionieren problemlos (also Funktion die als Parameter nur String, int, Boolean usw. haben). Hier der Aufbau der Methode <xsd:element name="getServiceProvider"> <xsd:complexType> <xsd:sequence> <xsd:element name="serviceProviderID" type="xsd:string"/> <xsd:element name="inputSPServiceAccess" type="tws:TwsInputSPServiceAccess"/> <xsd:element name="languageCode" type="xsd:string"/> <xsd:element name="sessionID" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getServiceProviderResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="tws:TwsServiceProvider"/> </xsd:sequence> </xsd:complexType> </xsd:element> Hier der Aufbau des Typs <complexType name="TwsInputSPServiceAccess"> <sequence> <element name="addAddress" default="true" type="boolean"/> <element name="addDescriptions" default="false" type="boolean"/> <element name="addFeatures" default="false" type="boolean"/> <element name="addDataClassAttributes" default="false" type="boolean"/> <element name="addMultimedia" default="false" type="boolean"/> <element name="addMultimediaURLs" default="false" type="boolean"/> <element name="addLocations" default="false" type="boolean"/> <element name="imageWidth" type="integer" minOccurs="0" maxOccurs="1"/> <element name="imageHeight" type="integer" minOccurs="0" maxOccurs="1"/> <element name="addExternalOnlineServices" default="false" type="boolean"/> </sequence> </complexType> Und hier noch die letzten Zeilen der Debug-Ausgabe: 2011-05-18 14:27:26.266885 wsdl: in serializeType: got a prefixed type: TwsInputSPServiceAccess, http://tbox.ch/ws/twsbook20/io/ 2011-05-18 14:27:26.266939 wsdl: in getTypeDef: type=TwsInputSPServiceAccess, ns=http://tbox.ch/ws/twsbook20/io/ 2011-05-18 14:27:26.266984 wsdl: in getTypeDef: have schema for namespace http://tbox.ch/ws/twsbook20/io/ 2011-05-18 14:27:26.267077 nusoap_xmlschema: <http://tbox.ch/ws/twsbook20/io/> in getTypeDef, did not find TwsInputSPServiceAccess 2011-05-18 14:27:26.267136 wsdl: in getTypeDef: did not find type TwsInputSPServiceAccess 2011-05-18 14:27:26.267189 wsdl: in serializeType: http://tbox.ch/ws/twsbook20/io/:TwsInputSPServiceAccess (TwsInputSPServiceAccess) is not a supported type. 2011-05-18 14:27:26.267259 wsdl: in serializeType: name=languageCode, type=http://www.w3.org/2001/XMLSchema:string,'>http://www.w3.org/2001/XMLSchema:string, use=literal, encodingStyle=, unqualified=qualified value=string(2) "de" 2011-05-18 14:27:26.267332 wsdl: in serializeType: got a prefixed type: string, XML Schema 2011-05-18 14:27:26.267381 wsdl: in serializeType: type namespace indicates XML Schema or SOAP Encoding type 2011-05-18 14:27:26.267445 wsdl: in getTypeDef: type=string, ns=http://www.w3.org/2001/XMLSchema 2011-05-18 14:27:26.267497 wsdl: in getTypeDef: do not have schema for namespace XML Schema 2011-05-18 14:27:26.267544 wsdl: in serializeType: returning: <languageCode>de</languageCode> 2011-05-18 14:27:26.267624 wsdl: in serializeType: name=sessionID, type=http://www.w3.org/2001/XMLSchema:string,'>http://www.w3.org/2001/XMLSchema:string, use=literal, encodingStyle=, unqualified=qualified value=string(36) "56d611a4-958d-4c6a-a570-de579ecac880" 2011-05-18 14:27:26.267700 wsdl: in serializeType: got a prefixed type: string, XML Schema 2011-05-18 14:27:26.267748 wsdl: in serializeType: type namespace indicates XML Schema or SOAP Encoding type 2011-05-18 14:27:26.267811 wsdl: in getTypeDef: type=string, ns=http://www.w3.org/2001/XMLSchema 2011-05-18 14:27:26.267863 wsdl: in getTypeDef: do not have schema for namespace XML Schema 2011-05-18 14:27:26.267910 wsdl: in serializeType: returning: <sessionID>56d611a4-958d-4c6a-a570-de579ecac880</sessionID> 2011-05-18 14:27:26.267962 wsdl: in serializeType: returning: <getServiceProvider xmlns="http://tbox.ch/ws/twsbook20/io/"><serviceProviderID>GER00020060042540116</serviceProviderID><languageCode>de</languageCode><sessionID>56d611a4-958d-4c6a-a570-de579ecac880</sessionID></getServiceProvider> 2011-05-18 14:27:26.268009 wsdl: serializeRPCParameters returning: <getServiceProvider xmlns="http://tbox.ch/ws/twsbook20/io/"><serviceProviderID>GER00020060042540116</serviceProviderID><languageCode>de</languageCode><sessionID>56d611a4-958d-4c6a-a570-de579ecac880</sessionID></getServiceProvider> 2011-05-18 14:27:26.268099 nusoap_client: got wsdl error: http://tbox.ch/ws/twsbook20/io/:TwsInputSPServiceAccess (TwsInputSPServiceAccess) is not a supported type. Ich hoffe Ihr habt mein Problem verstanden und es weiß jemand eine Lösung Zitieren
flashpixx Geschrieben 18. Mai 2011 Geschrieben 18. Mai 2011 Ich habe nur mal schnell drüber geschaut, aber auffällig ist die Meldung: did not find type TwsInputSPServiceAccess Schau bitte mal nach, ob das WSDL Schema vollständig definiert ist, denn es scheint so, als wäre dies nicht der Fall Zitieren
weissbiersepp Geschrieben 18. Mai 2011 Autor Geschrieben 18. Mai 2011 Daran liegt es leider auch nicht, die WSDL-URL wird ja dem NuSOAP Client beim Aufruf als $Endpoint mitgegeben. Da andere Funktionen wie z.B. ping aufrufbar sind, kann es daran nicht liegen. Auch der Namespace sollte richtig sein. Hab leider keine Idee was es sein könnte. Es wird auch kein XML beim Request oder Response gesendet, das heißt das es vll beim Serailisieren schon fehlerhaft ist, aber ich finde leider nichts :-( Zitieren
flashpixx Geschrieben 18. Mai 2011 Geschrieben 18. Mai 2011 nuSoap liest erst dann die Beschreibung der WSDL, wenn sie benötigt wird und auch nur den Teil, den es braucht, d.h. wenn bei einer Funktion die WSDL falsch angegeben ist, müssen die anderen nicht zwingend beeinträchtigt sein, sofern die XML valide ist (wenn die WSDL per nuSOAP generiert wird, dann ist sie valide). Zitieren
weissbiersepp Geschrieben 18. Mai 2011 Autor Geschrieben 18. Mai 2011 Ich gebe ja nur einmal die URL mit dem ?wsdl hinten dran an, zur Erstellung der Instanz. Und auf die Funktionen auf die ich von meinem PHP-Code zugreife sind auf einem externen Webserver. Also was genau mache ich falsch? Zitieren
weissbiersepp Geschrieben 19. Mai 2011 Autor Geschrieben 19. Mai 2011 bringt immer noch den gleichen Fehler, habe es schon die ganze Zeit versucht Ist es denn eigentlich richtig, wie ich den Parameter übergebe? Mit soapVal habe ich es auch schon versucht und funktioniert nicht Zitieren
flashpixx Geschrieben 19. Mai 2011 Geschrieben 19. Mai 2011 bringt immer noch den gleichen Fehler, habe es schon die ganze Zeit versucht Was liefert die Validierung? Zitieren
weissbiersepp Geschrieben 19. Mai 2011 Autor Geschrieben 19. Mai 2011 liefert halt dass das WSDL gültig ist und liefert mir eben die einzelnen Funktionen, oder was meinst du genau? Zitieren
flashpixx Geschrieben 19. Mai 2011 Geschrieben 19. Mai 2011 Es gibt Validierungstools für WSDL Strukturen, die sagen ob das XML syntaktisch valide ist und sie überprüfen, ob es inhaltlich vollständig ist Zitieren
weissbiersepp Geschrieben 19. Mai 2011 Autor Geschrieben 19. Mai 2011 Das WSDL ist zu 100% richtig, da es nicht von mir kommt sondern auf einem Webservice liegt ( der auf den ich zugreifen soll). Auf diesem Webservice greifen mehrere Benutzer zu und von daher sollte es richtig sein. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.