Experte für den WSDL-Import

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Menü Komponenten

Komponente > WSDL importieren
Datei > Neu > Weitere > Object Pascal-Projekte oder C++-Projekte > WebServices > WSDL-Import


Hinweis: Wenn das Dialogfeld WSDL importieren über Datei > Neu > Weitere aufgerufen werden soll, müssen Sie zuerst eine Anwendung erstellen, bevor Sie diesen Befehl aktivieren können. Mit dem Befehl Komponente > WSDL importieren können Sie den Experten ohne vorherige Erstellung einer Anwendung aufrufen.

Verwenden Sie dieses Dialogfeld zum Importieren eines WSDL-Dokuments oder eines XML-Schemas, das einen Webdienst beschreibt. Nach dem Import erzeugt der Experte alle Interface- und Klassendefinitionen, die für das Aufrufen dieser Webdienste über ein externes Interface-Objekt (THTTPRIO) erforderlich sind. Der Experte kann auch ein von Ihnen fertig zu stellendes Codegerüst für eine Webdienstanwendung erstellen (wenn Sie beispielsweise einen Webdienst implementieren möchten, der bereits in einem WSDL-Dokument definiert ist).


Seite "Sprache"

Wenn beim Aufruf des Experten kein Projekt geöffnet ist, wird die Startseite Sprache angezeigt. Auf dieser Seite können Sie angeben, für welche Sprache die erzeugten Bindungen gelten sollen:

  • Object Pascal
  • C/C++


Seite "WSDL-Speicherort"

Ermöglicht das Festlegen des URL des zu importierenden WSDL-Dokuments (oder wählen Sie ein bereits gespeichertes aus) und die Angabe der Anmeldeinformationen (Benutzername, Passwort und ein Proxy) für den Zugriff auf das Dokument.

Element Beschreibung

Verzeichnis der WSDL-Datei oder des URL

Geben Sie entweder einen WSDL-Dateinamen oder den URL der Site ein, in der das Dokument veröffentlicht ist. Mit Hilfe der Ellipsen-Schaltfläche neben dem Eingabefeld können Sie nach einem Speicherort suchen. Nach Eingabe eines Dateinamens können Sie auf Weiter klicken, um zur Seite SOAP-Version zu wechseln.

Benutzername

Geben Sie den Benutzernamen an, der verwendet werden soll, wenn sich das WSDL-Dokument auf einem sicheren Server befindet, für den eine Authentifizierung erforderlich ist.

Passwort

Geben Sie das Passwort ein, das neben dem Benutzernamen zur Authentifizierung auf dem Server mit dem WSDL-Dokument erforderlich ist.

Proxy

Geben Sie die Host-Namen für jeden Proxy-Server an, der Anforderungen an den auf der Seite WSDL-Quelle des Dialogfeldes Experte für den WSDL-Import angegebenen URL weiterleiten muss.

Seite "SOAP-Version"

Ermöglicht die Auswahl der SOAP-Version (1.1 oder 1.2), die von dem WSDL-Dokument verwendet wird, oder legen Sie fest, dass das Produkt die neueste verfügbare Version auswählen soll. Beachten Sie bitte, dass ein Dienst sowohl 1.1 als auch 1.2 unterstützen kann. Sie sollten die Option Automatische SOAP-Versionierung auswählen, um die Auswahl einer nicht passenden Version (was zu inkorrektem Quellcode führen könnte) zu vermeiden.

Wählen Sie eine der folgenden Optionen aus:

Element Beschreibung

Automatische SOAP-Versionierung

Ermöglicht die Auswahl der in dem zu importierenden WSDL beschriebenen SOAP-Dienste auf der Basis der SOAP-Version, die sie unterstützen. Wenn beide Versionen 1.1 und 1.2 zulässig und verfügbar sind, verwendet das Produkt SOAP 1.2. Siehe das Beispiel nach dieser Tabelle.

Nur WSDL-Bindungserweiterungen für das SOAP 1.1-Protokoll verarbeiten

Der Prozess kommuniziert mit dem Dienst nur über das SOAP 1.1-Protokoll.

Nur WSDL-Bindungserweiterungen für das SOAP 1.2-Protokoll verarbeiten

Der Prozess kommuniziert mit dem Dienst nur über das SOAP 1.2-Protokoll.

Beispiel: Angenommen, das WSDL beschreibt die von jedem der definierten Dienste verwendete SOAP-Version:

  • CreditCardIssueService SOAP 1.1
  • CreditCardVerifyService SOAP 1.1, 1.2
  • CreditCardRevokeService SOAP 1.2

Wenn Sie Automatische SOAP-Versionierung auf der Seite "SOAP-Version" auswählen, werden die folgenden Dienste importiert:

  • CreditCardIssueService SOAP 1.1
  • CreditCardVerifyService SOAP 1.2
  • CreditCardRevokeService SOAP 1.2

Die Version SOAP 1.1 von CreditCardVerifyService wird nicht importiert.

Wenn Sie Nur WSDL-Bindungserweiterungen für das SOAP 1.1-Protokoll verarbeiten auswählen, dann werden die folgenden Dienste importiert:

  • CreditCardIssueService SOAP 1.1
  • CreditCardVerifyService SOAP 1.1

CreditCardRevokeService wird weggelassen, weil es nur SOAP 1.2 unterstützt.

Wenn Sie Nur WSDL-Bindungserweiterungen für das SOAP 1.2-Protokoll verarbeiten auswählen, dann werden die folgenden Dienste importiert:

  • CreditCardVerifyService SOAP 1.2
  • CreditCardRevokeService SOAP 1.2

CreditCardIssueService wird weggelassen, weil es nur SOAP 1.1 unterstützt.


Klicken Sie auf Weiter, um zur Seite WSDL-Optionen für den Import zu wechseln.

Seite "WSDL-Optionen für den Import"

Auf dieser Seite des Experten konfigurieren Sie, wie der Experte Quellcode für die Definitionen in einem WSDL-Dokument generieren soll. Wählen Sie beliebige der im Folgenden beschriebenen Optionen aus. Sie sollten die Standardoptionen verwenden, weil diese den sichersten Weg zum Importieren von WSDL-Dokumenten bieten.


Element Beschreibung

Ausführliche Informationen über Typen und Interfaces generieren

Wenn diese Option aktiviert ist, erzeugt das WSDL-Importprogramm Informationen zu Typ-Namespaces, Dienststilen, Namen der Bindungen und weiteren WSDL-Daten.

Ein out-Parameter ist der Rückgabewert

Ist diese Option ausgewählt, ordnet das Importprogramm Operationen mit einer einzelnen Ausgabenachricht solchen Funktionen zu, deren Ausgabenachricht der Rückgabewert ist. Anderenfalls wird die Ausgabenachricht einem Ausgabeparameter zugeordnet.

Server-Implementierung statt Client-Implementierung erzeugen

Ist diese Option ausgewählt, generiert das Importprogramm Implementierungsklassen für die importierten Interfaces. Benutzen Sie diese Option, wenn Sie einen Server entwickeln, der einen bereits in einem WSDL-Dokument definierten Webdienst implementiert.

Literalparameter abwickeln

Bei der Verwendung von Document Literal Encoding beschreibt der Webdienst keine Operationen. Stattdessen beschreibt er zwei Records, wovon einer die erwartete Eingabe und der andere die erwartete Ausgabe enthält. Ist die Option Literalparameter abwickeln ausgewählt, konvertiert das Importprogramm diese beiden Records in Methodenaufrufe.

Literale Typen ausgeben

Bei der Verwendung von Document Literal Encoding beschreibt der Webdienst keine Operationen. Stattdessen beschreibt er zwei Records, wovon einer die erwartete Eingabe und der andere die erwartete Ausgabe enthält. Ist die Option Literale Typen ausgeben ausgewählt, generiert das Importprogramm Typdefinitionen für diese beiden Records, auch wenn Literalparameter abwickeln aktiviert ist.

String als WideString

Ist diese Option ausgewählt, wandelt das Importprogramm alle String-Typen in WideString-Werte um. Anderenfalls verwendet das Importprogramm den String-Typ. WideString-Werte können für erweiterte Zeichensätze erforderlich sein. Enthalten Strings keine derartigen Zeichen, ist der String-Typ effizienter.

Destruktoren für extern einsetzbare Typen erzeugen

Ist diese Option ausgewählt, generiert das Importprogramm Destruktoren für Typklassen. Diese Destruktoren geben alle verschachtelten Member frei, deren Typen Klassen oder Arrays mit Klassen sind. Die generierten Destruktoren vereinfachen die Freigabe der Instanzen von Klassen, die Typen repräsentieren, da Sie Klassen-Member, die auch anhand von Klassen den Typ TRemotable repräsentieren, nicht mehr explizit freigegeben müssen.

Warnungskommentare erzeugen

Ist diese Option ausgewählt, fügt das Importprogramm den Kommentaren Warnungen hinzu, die am Anfang der generierten Dateien einfügt werden. Diese Warnungen beschreiben Probleme wie ungültige Typdefinitionen in einem WSDL-Dokument, wenn Schema-Fehler ignorieren ausgewählt ist, Fehler, die aufgetreten sind, wenn Literalparameter abwickeln ausgewählt ist, usw.

Reine Kollektionen zu Wrapper-Klassentypen zuordnen

Aktivieren Sie diese Option, damit das WSDL-Importprogramm importierte Array-Typen zu Wrapper-Klassen zuordnen kann. Diese Option ist in erster Linie für C++ gedacht. In C++ können Array-Typen nicht direkt WSDL-Array-Typen zugeordnet werden, daher ist eine Wrapper-Kollektionsklasse erforderlich.

Nur verwendete Typen ausgeben

Wenn diese Option aktiviert ist, erzeugt das WSDL-Importprogramm keinen Code für Typen, die im WSDL-Dokument deklariert sind, aber in dem bereitgestellten Dienst nicht verwendet werden. Beachten Sie bitte, dass Klassen sich nicht immer daran halten, weil ein Dienst eine Instanz einer abgeleiteten Klasse zurückgeben könnte, wenn eigentlich die Basisklasse erwartet wird. In diesem Fall wird Code für die Basisklasse und die abgeleitete Klasse generiert.

Aufzählungs-Member validieren

Aktivieren Sie diese Option, damit das WSDL-Importprogramm beim Erzeugen der Aufzählungs-Member eine globale Symbolliste verwendet. Diese Option verhindert Namenskonflikte zwischen Aufzählungs-Membern der in dem WSDL-Dokument deklarierten Aufzählungstypen. Seit Object Pascal 2009 wird empfohlen, diese Option immer zu aktivieren.

Fehlertypen importieren

Aktivieren Sie diese Option, damit das WSDL-Importprogramm Typen verarbeitet, die als fehlerhaft gekennzeichnet sind.

Header-Typen importieren

Aktivieren Sie diese Option, damit das WSDL-Importprogramm Typen verarbeitet, die als Header gekennzeichnet sind.

Interface-GUIDs mit COM API generieren

Aktivieren Sie diese Option, damit das WSDL-Importprogramm jedes Mal, wenn ein Dienst importiert wird, eindeutige GUIDs zuweist. Wenn diese Option deaktiviert ist, bleibt die einmal für einen Dienst generierte GUID unverändert, wenn das WSDL-Importprogramm Code für diesen Dienst erzeugt. In den meisten Situationen sollte diese Option nicht aktiviert werden.

Einbezogene und importierte Schemas verarbeiten

Aktivieren Sie diese Option, damit das WSDL-Importprogramm einbezogene und importierte Schemas verarbeitet.

Klassenaliase als Klassentypen erzeugen

Aktivieren Sie diese Option, damit das WSDL-Importprogramm Klassentypen anstelle von schwachen Aliasen erzeugt. Diese Option stellt sicher, dass die generierten Aliasklassen vom Basistyp abweichende RTTI (Run-Time Type Information) haben.

Out-Parameter zulassen

Diese Option steuert, ob das WSDL-Importprogramm Methoden erzeugt, die bei der Rückgabe von mehreren Teilen einer SOAP-Botschaft out-Parameter verwenden. Wenn diese Option deaktiviert ist, werden keine out-Parameter erzeugt; das WSDL-Importprogramm generiert dann Wrapper-Klassen für mehrteilige SOAP-Botschaften.

Setter und Getter für Eigenschaften verwenden

Das WSDL-Importprogramm generiert standardmäßig Eigenschaften, die den Feldern der erzeugten Klassen direkt zugeordnet sind. Mit dieser Option können Sie erreichen, dass das WSDL-Importprogramm stattdessen Setter- und Getter-Methoden erzeugt.

Optionale und nillable Elemente verarbeiten

Aktivieren Sie diese Option, damit das WSDL-Importprogramm relevante Informationen über optionale und nillable Eigenschaften erzeugt. Die SOAP-Laufzeit verwendet diese Informationen, um zu ermöglichen, dass bestimmte Eigenschaften nil sind.

TXSString für einfache nillable Typen verwenden

Der WSDL-Standard lässt zu, dass einfache Typen in Object Pascal nil bzw. in C++ NULL sind. Object Pascal und C++ lassen das nicht zu. Aktivieren Sie diese Option, damit das WSDL-Importprogramm diese Beschränkung umgeht, indem Instanzen von Wrapper-Klassen verwendet werden.

Bereichsabhängige Aufzählungen erzeugen

Wenn diese Option aktiviert ist, werden bereichsabhängige Aufzählungen erzeugt. Aktivieren Sie diese Option, wenn das WSDL-Dokument verschiedene Aufzählungen enthält, die Werte mit demselben Namen definieren.

Klicken Sie auf der Seite mit den WSDL-Importoptionen auf Fertig stellen, um mit der Erzeugung des Quellcodes fortzufahren.

Fehlermeldungen

Die folgenden Fehlermeldungen können vom Experten für den WSDL-Import erzeugt werden.

  • WSDL-Datei/-Ort kann nicht geladen werden: <falscher URL>. Fehler [Leeres Dokument].
  • Diese Fehlermeldung gibt einen ungültigen URL an. Das bedeutet, dass ein URL keinen Inhalt zurückliefert.
  • WSDL-Datei/-Ort kann nicht geladen werden: <URL>. Fehler [Whitespace ist an dieser Position nicht zulässig]
  • Dieser Fehler gibt einen URL an, der HTML- oder Textinhalt zurückgeliefert hat (d.h. einen URL, der keinen XML-Inhalt zurückgegeben hat).
  • WSDL-Datei/-Ort kann nicht geladen werden: <URL>. Fehler [Ende-Tag 'ul' stimmt nicht mit dem Start.Tag 'p' überein]
  • Dieser Fehler gibt auch einen URL an, der HTML-Inhalt zurückgegeben hat. Diese Meldung wird ausgegeben, wenn Sie den Abfrage-String '?wsdl' vergessen haben, der häufig von Webdiensten verwendet wird. Zum Beispiel, wenn Sie für einen .NET-Webdienst http://<domain>.com/service.asmx anstatt http://<domain>.com/service.asmx?wsdl verwenden.
  • Dieser Fehler gibt an, dass der URL XML-Inhalt zurückgegeben hat, der Inhalt aber nicht das für eine WSDL-Datei erwartete Stammelement <definition> enthielt. Dies kommt beispielsweise vor, wenn Sie das von einem WSDL-Dokument verwendete Schema anstatt das WSDL-Dokument selbst importiert haben.

Fehlerbehebung

Eine einfache Möglichkeit für die URL-Fehlerbehebung ist, den WSDL-URL in Ihrem Browser anzuzeigen. Wenn eine HTML-Seite angezeigt wird, dann ist der URL nicht korrekt. In einem WSDL-Dokument muss XML-Code angezeigt werden.

Siehe auch