Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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 :)

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

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 :-(

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).

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?

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

liefert halt dass das WSDL gültig ist und liefert mir eben die einzelnen Funktionen, oder was meinst du genau?

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.