WebserviceTool (Nachfolger von taSoapClient) ist ein generischer Webservice Klient mit welchem Sie HTTP und HTTPS basierte Webservices (SOAP und REST) konsumieren können.
Es basiert auf der Eve VM 1.50 und läuft auf Win32 Desktops (mit oder ohne Java) und auf Systemen mit einer Java VM. Webservice Anfragen können mittels BeanShell Scripts automatisiert werden, im GUI und von der Kommandozeile aus.

WebserviceTool v5.10

Was ist WebserviceTool?
Multi Sprache
Daten eingeben und organisieren
Verschlüsselung
Daten finden und ersetzen
Anfrage ausführen
Massenanfragen ausführen
TLS Client Authentifizierung
Multi-User Nutzung ab zentraler Installation
Automatisierung mit BeanShell Scripts
WebserviceTool starten mit Kommandozeilen-Optionen
Fehlersuche und -behebung

Was ist WebserviceTool?

Dieses Programm (Nachfolger von taSoapClient) ist ein generischer Webservice Klient mit welchem Sie HTTP und HTTPS basierte Webservices konsumieren können.
Es basiert auf der Eve VM 1.50 ( http://www.ewesoft.com). Zur Verbesserung der Leistung verwendet das Programm die JavaVM, falls installiert. Wenn Sie langsames Tastatur- oder Grafikverhalten feststellen, dann setzen Sie die Umgebungsvariable J2D_D3D=false bevor Sie WebserviceTool starten.

Das Programm hat folgende Leistungsmerkmale:

  • Läuft auf Win32 Desktops (mit oder ohne Java) und auf Systemen mit einer Java VM.
  • Unterstützt SOAP und REST Webservices.
  • Mehrsprachige Benutzeroberfläche
  • Kommandozeilen Unterstützung
  • Multi-User Unterstützung ab zentraler Installation
  • Die grafische Benutzeroberfläche zur Eingabe der Webservice Eingabedaten wird dynamisch erstellt anhand der XML Anfrage Dateien. Die Dateneingabe kann durch spezifische Formulare unterstützt werden (konfigurierbar).
  • Die XML Dateien für die SOAP Anfragen können automatisch aus der WSDL erstellt werden.
  • Die XML Dateien für die REST Anfragen können automatisch aus der OpenApi v3 JSON Datei erstellt werden.
  • Unterstützt Webservices mit HTTPS (TLS 1.2), auch mit SNI (Server Name Indication)
  • Unterstützt Webservices mit zertifikat-basierter TLS Client Authentifizierung
  • Unterstützt Webservices mit Basic Authentifizierung
  • Unterstützt Webservices mit UsernameToken Authentifizierung (Text und Hash)
  • Unterstützt Webservices mit NTLM Authentifizierung
  • Unterstützt HTTP Proxys mit Basic Authentifizierung
  • Unterstützt HTTP Proxys mit HTTPS Tunneling (HTTP CONNECT)
  • Unterstützt WSHttpBinding
  • Unterstützt HTTP Custom Header Felder
  • Unterstützt Massenanfragen
  • Unterstützt Automatisierung mittels signierten BeanShell Scripts (im GUI und von der Kommandozeile aus). Im GUI-Modus können dem Skript Daten übergeben werden aus benutzerdefinierten Eingabeformularen.
  • Webservice Definitionsdateien (*.ws5) werden verschlüsselt gespeichert. In den Anfragedateien können einzelne Felder als verschlüsselt definiert werden.
  • Webservice Definitionen können importiert und exportiert werden.
  • Bei REST Webservices werden die Formate XML und JSON unterstützt. POST Parameter können im form-encoded Format geschickt werden.
  • Die XML Antwort des Webservice wird als Baum, benutzerfreundlichen Text oder als Tabelle ausgegeben. Selektionen in der Baum-, Text- und Tabellenansicht können in die Zwischenablage kopiert werden. Der Tabelleninhalt ist im Tabulator-getrennten Format, sodass er in ein Tabellenkalkulationsprogramm eingefügt werden kann.
  • Die Anfrage und die Antwort können im XML Format geloggt werden (manuell oder automatisch mit der Auto-Log Option). Die Log-Dateien werden im Unterverzeichnis 'Log' desjenigen Verzeichnisses gespeichert, in welchem die Anfragedatei liegt.
  • In der Antwort kann nach Texten gesucht werden.
  • Inhalte, welche referenziert sind (XML MultiRef) können de-referenziert werden, so dass der Inhalt beim zugehörigen XML Element angezeigt wird.
  • Eingebauter Texteditor zum Modifizieren der Webservice Anfragedateien
  • Zeigt gespeicherte Logdateien oder XML Daten aus der Zwischenablage an
  • Zur Fehlersuche und -behebung kann der Debug Modus aktiviert werden, in welchem Informationen gesammelt werden, welche helfen können das Problem zu beseitigen.

Zum Anfang

Multi Sprache

Das Programm wird in deutsch und englisch ausgeliefert, ist aber so konzipiert, dass es eine beliebige Anzahl Sprachen unterstützt. Um das Programm in Ihre Sprache zu übersetzen oder um die bestehenden deutschen / englischen Texte abzuändern, folgen Sie bitte den Anweisungen im 'Custom Language Package' (WebserviceTool-Custom.zip).

Zum Anfang

Daten eingeben und organisieren

Die Daten in der Webservice Definitionsdatei (*.ws5) ist als Baumstruktur organisiert und Webservices und / oder ihre Anfragen können mit den Funktionen Ausschneiden und Einfügen im Baum verschoben werden.

Proxy Einstellungen definieren

Beim obersten Eintrag können Sie die http Proxy Einstellungen definieren:

  • Name: Der Name des obersten Eintrages. Sie können hier einen beliebigen Namen eingeben.
  • Beschreibung: Geben Sie eine beliebige Beschreibung ein. Sie wird unten im Fenster angezeigt, wenn Sie den obersten Eintrag selektieren.
  • Proxy verwenden: Markieren Sie diese Option, wenn Sie den http Proxy verwenden wollen. Dies ist eine globale Einstellung: Der Proxy wird nur dann verwendet, wenn Sie auch beim Webservice 'Proxy verwenden' (siehe unten) markieren.
  • Proxy Server: Die Adresse des Proxy Servers, z.B. http://proxy.local:9090 oder http://192.168.100.1:8080
  • Proxy Benutzer: Ihr Benutzername beim Proxy.
  • Proxy Passwort: Ihr Passwort beim Proxy

Hinzufügen eines neuen Webservice

Wenn Sie einen neuen Webservice hinzufügen, müssen Sie folgende Informationen definieren:

  • Name: Der Name des Webservice. Sie können hier einen beliebigen Namen eingeben.
  • Beschreibung: Geben Sie eine beliebige Beschreibung ein. Sie wird unten im Fenster angezeigt, wenn Sie den Webservice selektieren.
  • URL: Dies ist der SOAP Service Endpunkt bzw. die REST Basis URL, z.B. http://www.webservicex.net/country.asmx
  • max. TLS version: Wählen Sie immer die höchste verfügbare Version. Wählen Sie nur dann eine tiefere Version, wenn Sie Fehler beim TLS handshake feststellen.
  • SHA1 Fingerabdruck: Diese Zeichenkette identifiziert den HTTPS Server anhand seines Zertifikates. Soll keine Identitätsprüfung erfolgen, kann hier DO_NOT_VERIFY eingetragen werden (NICHT empfohlen!).
  • SNI verwenden: ServerNameIndication ist eine TLS Erweiterung, die bei allen verschlüsselten Verbindungen aktiv sein sollte. Schalten Sie es nur dann aus, wenn Sie Fehler beim TLS handshake feststellen.
  • Kodierung: Zeichenkodierung, welche der Webservice verwendet.
  • REST verwenden: Markieren Sie diese Option für REST Webservices. Für SOAP Webservices lassen Sie diese Option unmarkiert.
  • WSHttpBinding verwenden: Markieren Sie diese Option für SOAP Webservices, welche WSHttpBinding anstelle von BasicHttpBinding verwenden. Für REST Webservices hat Option keine Wirkung.
  • Zeige Attribute als Elemente: Markieren Sie diese Option, wenn Sie XML Attribute als eigene XML Elemente anzeigen wollen. Dies ist für gewisse REST Webservices nützlich.
  • Authentifizierung: Wählen Sie den Authentifizierungstyp aus
  • Benutzername: Ihr Benutzername für den Zugriff auf den Webservice.
  • Passwort: Ihr Passwort für den Zugriff auf den Webservice.
  • HTTP Custom Header Felder: Hier können Sie neue HTTP Header Felder hinzufügen oder bestehende überschreiben, welche bei allen Anfragen gesetzt werden müssen. Geben Sie pro Zeile 1 Feld in folgendem Format ein: Feldname:Wert
  • Proxy verwenden: Markieren Sie diese Option, wenn Sie den Proxy Server für diesen Webservice verwenden wollen.
  • Connect Timeout: Dies ist die Zeitdauer in ms, nach welcher ein Versuch, sich mit dem Server zu verbinden, abgebrochen wird.
  • Read Timeout: Dies ist die Zeitdauer in ms, nach welcher ein Versuch, Daten vom Server zu lesen, abgebrochen wird.
  • Anfrage Verzeichnis: Dies ist das Verzeichnis, in welchem die XML Anfrage Dateien gespeichert werden. Das Verzeichnis kann absolut oder relativ zur Webservice Definitionsdatei angegeben werden. Sie können hier zur besseren Multi-User Unterstützung eine Umgebungsvariable verwenden.
  • Privater Schlüssel: Der private Schlüssel im PKCS8 PEM Format
  • Client Zertifikat: Das Client Zertifikat im PEM Format
  • Unterdrücke Passwort in Logs: Passwörter werden durch *** ersetzt
  • Modifikations-Passwort: Geben Sie ein Passwort ein, wenn Sie den Eintrag gegen unauthorisierte Modifikation schützen wollen.

Hinzufügen einer neuen Anfrage

Wenn Sie eine neue Anfrage zu einem Webservice hinzufügen, müssen Sie folgende Informationen definieren:

  • Name: Der Name der Anfrage. Sie können hier einen beliebigen Namen eingeben.
  • Beschreibung: Geben Sie eine beliebige Beschreibung ein. Sie wird unten im Fenster angezeigt, wenn Sie Anfrage selektieren.
  • Benutzername: Ihr Benutzername für den Zugriff auf den Webservice. Wenn dieses Feld leer ist, werden Benutzer und Passwort verwendet, welche beim Webservice definiert sind.
  • Passwort: Ihr Passwort für den Zugriff auf den Webservice.
  • SOAP Aktion: Geben Sie hier die SOAP Aktion ein (für SOAP Webservices).
  • HTTP Befehl: Wählen Sie hier den HTTP Befehl (für REST Webservices).
  • HTTP Custom Header Felder: Hier können Sie neue HTTP Header Felder hinzufügen oder bestehende überschreiben. Geben Sie pro Zeile 1 Feld in folgendem Format ein: Feldname:Wert. Um globale Header Felder zu löschen, lassen Sie die Wert leer.
  • href ersetzen: Markieren Sie diese Option, wenn Sie referenzierte Elemente und Werte de-referenzieren möchten. Wenn Sie in der Webservice Antwort anstelle von sinnvollen Daten href="#id1" oder dergleichen sehen, sollten Sie diese Option markieren.
  • Dateiname: Der Dateiname der Anfragedatei.
  • Startelement: Gibt das Element an, welches nach der Anzeige der Antwort im Baum vorselektiert ist. Das Element wird mittels der Xpath Notation definiert.
    Beispiel: /doc/pag/lin[2] selektiert das zweite lin-Element des ersten pag-Elements innerhalb des Wurzel-Elements doc.
  • Standardansicht: Ansicht, welche standardmässig für die Anzeige der Antwort verwendet wird.
  • Auto-Log: Anfrage und Antwort werden automatisch geloggt (auf Disk gespeichert).
  • Anfrage speichern: Aktualisiert die Anfragedatei mit den Werten, welche beim Aufruf eingegeben wurden.
  • Modifikations-Passwort: Geben Sie ein Passwort ein, wenn Sie den Eintrag gegen unauthorisierte Modifikation schützen wollen.

Anfragedateien erstellen

Am Anfang der Anfragedatei können Sie das XML Encoding definieren. Dieses Encoding wird verwendet beim Lesen und Aktualisieren der Anfragedatei und braucht nicht zwingend übereinzustimmen mit demjenigen Encoding, welches bei der Kommunikation mit dem Webservice verwendet wird. Für Windows Systeme (mit nativer VM oder Java VM) empfehlen wir folgende Definition: <?xml version="1.0" encoding="ISO-8859-1"?>. Für Linux Systeme empfehlen wir <?xml version="1.0" encoding="UTF-8"?>. Falls kein XML Encoding definiert ist, wird ISO-8859-1 (=Windows1252, "ANSI") verwendet.

Das Programm kann SOAP XML Anfrage Dateien automatisch aus WSDL Dateien erstellen, welche den document/literal style verwenden. Wählen Sie hierzu den Menüpunkt 'Anfrage hinzufügen/aktualisieren aus WSDL' im 'Bearbeiten' Menü. Dieser Menüpunkt ist nur aktiv in der PRO Version und wenn eine Java VM 1.5 oder höher verwendet wird. Beim ersten Verwenden dieser Funktion müssen Sie ein SOAP Binding auswählen (später kann das Binding nicht mehr geändert werden, weil Operationen aus unterschiedlichen Bindings nicht gemischt werden dürfen). Dann können Sie die Operationen auswählen, für welche Sie Anfragen erstellen möchten. Anfragen, deren Namen mit dem Namen der Operation übereinstimmen, werden aktualisiert. XML Anfragedateien, deren Dateinamen mit dem Operationsnamen übereinstimmen, werden überschrieben mit den Definitionen aus der WSDL Datei. Nicht-existierende Anfragen werden am Schluss der Liste angehängt und die zugehörigen XML Anfragedateien werden im definierten 'Anfrage Verzeichnis' des Webservices erstellt. Alle Blatt-Elemente der XML Anfragedatei werden als Eingabefelder markiert (für Anpassungen siehe unten).

Wenn die WSDL vom Programm nicht unterstützt ist, empfehlen wir, dass Sie ein SOAP Programm wie das freie soapUI verwenden, um die XML Anfrage Dateien zu erstellen.

Sie können in den Anfragedateien Variablen im Format ${API.globalVars.key} verwenden. Diese werden beim Laden der Anfrage durch den Inhalt der entsprechenden Variable ersetzt. Die API.globalVars Variablen müssen über ein Script gesetzt werden (siehe API Dokumentation).
Beispiel:
<accountId>${API.globalVars.accId}</accountId>
Wenn Sie in einem Script mit API.globalVars.put("accId","1234"); die Variable API.globalVars.accId setzen, dann würde obiges XML-Element wie folgt eingelesen:
<accountId>1234</accountId>

In den Anfragedateien können Sie bei XML Elementen spezielle Attribute definieren (diese Attribute werden beim Senden der Anfrage nicht mitgeschickt):

  • wst_title="Titel des Eingabefeldes" definiert ein Element als Daten-Eingabefeld, welches im dynamischen GUI angezeigt wird
  • wst_isPassword="true" bewirkt, dass im GUI die Dateneingabe verdeckt ist (mit *). Wenn die Daten auch im Log verdeckt sein sollen, setzen Sie zusätzlich das wst_isEncrypted Attribut.
  • wst_isEncrypted="true" definiert, dass die Daten in diesem Element verschlüsselt sind. Nur während der Dateneingabe im GUI und beim Senden der Anfrage sind die Daten entschlüsselt.
  • wst_noUpdate="true" bewirkt, dass ein ein Feld beim Speichern der Anfragedatei nicht zurückgeschrieben wird.
  • wst_name="VariablenName" kann bei den URL Parametern oder HTTP Header Feldern einer REST Anfrage verwendet werden, um den Namen des Parameters/Header Feldes zu übersteuern (normalerweise wird der Name des XML-Elementes verwendet). In REST Query Parametern kann dieses Attribut auf "" gesetzt werden, um der URL eine Variable ohne Namen (und ohne =) hinzuzufügen
  • Mit wst_inputForm kann ein Eingabeformular definiert werden, welches die Dateneingabe erleichtert. Das Formular wird mit einem JSON Objekt definiert, wobei der Schlüssel formType folgende Werte annehmen kann: singleItemChooser (1 Wert aus einer Liste auswählen), multiItemChooser (1 oder mehrere Werte aus einer Liste auswählen), fileOpenChooser (Datei zum Öffnen auswählen), fileSaveChooser (Datei zum Speichern auswählen), dirChooser (Verzeichnis auswählen), dateChooser (Datum auswählen), dateTimeChooser (Datum und Zeit auswählen) oder numericInput (Ganzzahl eingeben)
    Je nach Formulartyp sind weitere Schlüssel notwendig oder optional. Die optionalen Schlüssel beginnen alle mit opt und können weggelassen werden .
  • wst_isReadonly="true" verhindert, dass der Benutzer Daten direkt im Eingabefeld eingeben kann. Dieses Attribut macht nur Sinn in Kombination mit wst_inputForm
  • Mit wst_textLines="5" kann die Anzahl der Textzeilen des Eingabefeldes definiert werden

Folgende wst_inputForm Definitionen sind unterstützt:

  {'formType':'dirChooser','optStartDir':'C:/Downloads'} // sie können / oder \\ verwenden
  {'formType':'fileOpenChooser','optStartDir':'C:/Downloads'}
  {'formType':'fileSaveChooser','optStartDir':'C:/Downloads'}
  {'formType':'singleItemChooser','values':'value1,value2,value3','optLabels':'label1,label2,label3'} // optSeparator ist auch unterstützt
  {'formType':'multiItemChooser','values':'value1\tvalue2\tvalue3','optSeparator':'\t'} // optLabels ist auch unterstützt
  {'formType':'dateChooser','format':'dd.MM.yyyy'}
  {'formType':'dateTimeChooser','format':'yyyy-MM-dd\'T\'HH:mm:ss'}
  {'formType':'numericInput','minValue':1900,'maxValue':2100}

Sind in der Anfrage keine wst_ Attribute vorhanden, wird die Anfrage unmodifiziert geschickt (siehe ApiRequest.baRequest)

REST Webservices können neben dem POST Befehl weitere HTTP Befehle verwenden. Sie verwenden normalerweise GET, um Daten abzurufen und PUT oder POST, um Daten zu senden. Daten können als URL Parameter oder als PUT/POST Daten gesendet werden. Die Anfragen werden gleich definiert wie bei SOAP Anfragen, aber mit folgenden Abweichungen:

  1. HTTP Befehl: Wählen Sie den richtigen Befehl
  2. Anfragedaten: Die Anfragedaten werden als XML Daten mit folgender Struktur definiert: Das Wurzelelement kann beliebig benannt werden und kann folgende 3 Subelemente enthalten:
    • httpHeaderFields: Fügen Sie dieses Element hinzu, wenn Sie HTTP Header Felder setzen möchten. Der Name und Inhalt der Subelemente setzen die entsprechenden Header Felder. Wenn der Inhalt leer ist, wird das Header Feld entfernt. Header Felder können an mehreren Stellen definiert werden. Wenn dies der Fall ist, werden die Felder in folgender Reihenfolge gesetzt/überschrieben: Webservicedatei:Webservice Eintrag, Webservicedatei:Anfrage Eintrag, Anfrage-XML-Datei, API Funktion ApiRequest.setHeaderField
    • relativeURL: Dieses Element wird normalerweise immer benötigt. Die Subelemente dieses Elementes können beliebig benannt werden. Die URL wird später anhand der Werte der Subelemente aufgebaut.
    • parameters: Fügen Sie dieses Element hinzu, wenn Sie URL Parameter übergeben wollen. Die Namen der Subelemente müssen dem Parameternamen entsprechen. Der Wert des Subelements wird dann als Wert des entsprechenden Parameters geschickt.
    • POSTdata: Fügen Sie dieses Element hinzu, wenn Sie Daten mit dem PUT oder POST Befehl schicken wollen. Die Subelemente müssen der Spezifikation des REST Webservices entsprechen. Das optionale Attribut "Content-Type" kann gesetzt werden auf "application/json" für JSON Daten oder auf "application/x-www-form-urlencoded" um form-encoded Parameter zu schicken. Der Default-Wert ist "application/json" für REST Webservices und "text/xml" für SOAP Webservices.

Untenstehend ist ein Beispiel für das Pivotal Tracker API (http://www.pivotaltracker.com/help/api).

<PivotalTracker>
  <relativeURL>
    <part1>projects</part1>
    <part2 wst_title="Project number">1234</part2>
    <part3>stories</part3>
  </relativeURL>
  <parameters>
    <token wst_title="Security token" wst_noUpdate="true">010203040506070809A0</token>
  </parameters>
  <POSTdata>
    <story>
      <story_type wst_title="Story type">feature</story_type>
      <name wst_title="Story name">User Story 123</name>
      <requested_by wst_title="Requestor"&gtTom Arn</name>
      <description wst_title="Story description">This is the user story number 123</description>
    </story>
  </POSTdata> 
</PivotalTracker>

Wenn Sie die (Basis) URL für diesen Webservice als https://www.pivotaltracker.com/services/v3 definieren, wird mit den obigen Anfragedaten ein dynamisches GUI erzeugt, wo Sie die relativen Teile der URL, die URL Parameter und die POST Daten eingeben können. Wenn die Anfrage an den Webservice geschickt wird, wird folgender HTTP Rohcode gesendet:

POST /services/v3/projects/1234/stories?token=010203040506070809A0 HTTP/1.1
Host: www.pivotaltracker.com
Content-Type: text/xml; charset=utf-8
Content-Length: 181

<story>
  <story_type>feature</story_type>
  <name>User Story 123</name>
  <requested_by>Tom Arn</name>
  <description>This is the user story number 123</description>
</story>

Zum Anfang

Datenverschlüsselung

Datenverschlüsselung wird in folgenden Kontexten verwendet:

  • um die Webservice Dateien (*.wst5) mit einem Passwort zu verschlüsseln
  • um das Passwort der Webservice Datei zu verschlüsseln, wenn es in einem Script verwendet wird mit API.loadWebserviceFile: um das verschlüsselte Passwort zu erhalten, starten Sie das GUI, selektieren den obersten Eintrag und wählen Menü -> Extras -> Verschlüsselung
  • um das Passwort einer Anfrage zu verschlüsseln, wenn es in einem Script verwendet wird mit ApiRequest.setPassword oder API.guiGetUserInput: um das verschlüsselte Passwort zu erhalten, starten Sie das GUI, selektieren den Webservice und wählen Menü -> Extras -> Verschlüsselung
  • um Datenfelder in Anfragedateien zu verschlüsseln: verwenden Sie das wst_isEncrypted Attribut und überlassen Sie die Verschlüsselung der APP. Im GUI generierte Passwörter funktionieren hier nicht.

Daten finden und ersetzen

Sie können nach Webservices / Anfragen suchen, welche einen Suchbegriff enthalten. Die Suche unterscheidet nicht nach Gross- und Kleinschreibung und durchsucht alle Textfelder aller Einträge.
'Finden' sucht immer ausgehend vom obersten Eintrag im Baum. 'Finde nächsten' fährt mit der Suche fort beim Eintrag nach dem aktuell selektierten Eintrag.
Mit 'Finden und Ersetzen' kann ein Text definiert werden, welcher dann bei 'Ersetzen, finde nächsten' den Suchbegriff im aktuell selektierten Eintrag ersetzt.

Zum Anfang

Anfrage ausführen

Um eine Anfrage auszuführen, müssen Sie eine Anfrage selektieren und 'Anfrage ausführen' wählen. Das Programm erstellt nun dynamisch eine Eingabemaske, basierend auf der definierten Anfragedatei. Geben Sie alle Eingaben ein und drücken sie OK. Das Programm übernimmt nun Ihre Eingaben in die Anfrage, schickt diese an den Webservice und stellt die Antwort in einem neuen Reiter am Schirm dar. Bei SOAP Webservices wird auch die Anfrage in einem Reiter angezeigt.

Zum Anfang

Massenanfrage ausführen

Wenn Sie eine Anfrage mehrmals mit unterschiedlichen Daten machen wollen, können Sie dies mit der Funktion Massenanfrage automatisieren:

  • Dateipfad: Wählen Sie die Datei mit den Eingabedaten. Die Datei muss eine Tab-getrennte Textdatei im ANSI Format sein. Jede Zeile enthält die Daten der Eingabefelder für eine Anfrage. In den Datenfeldern können Sie ^t für Tabulatoren und ^n für Zeilenumbrüche verwenden.
  • Zeige Antwort im GUI: Wenn markiert, wird jede Antwort in einem Reiter des GUIs angezeigt.
  • Auto-Log: Dieses Nur-Lese Kontrollkästchen zeigt die Auto-Log-Option der Anfrage. Wenn markiert, werden alle Antworten automatisch protokolliert.
  • Anfrage speichern: Dieses Nur-Lese Kontrollkästchen zeigt die Anfrage-Speichern-Option der Anfrage. Wenn markiert, werden alle Anfragedateien nach der Anfrage aktualisiert. Aus Performancegründen sollten Sie diese Option bei Massenanfragen nicht markieren.
  • Start: Startet die Massenanfrage. Durch nochmaliges Drücken des Knopfes kann die Massenanfrage abgebrochen werden.

Diese Funktion hängt vom Typ der Lizenz ab, die Sie gekauft haben und ist daher möglicherweise für Sie nicht verfügbar.

Zum Anfang

TLS Client Authentifizierung

Wenn Ihre Client Credentials in einer PKCS12 Datei (Extension .p12) gespeichert sind, dann müssen Sie mit dem openssl Programm den privaten Schlüssel und das Zertifikat extrahieren.

Um das Zertifikat zu extrahieren geben Sie folgenden Befehl ein:
openssl pkcs12 -clcerts -nokeys -in ihreDatei.p12 -out ihreDatei-clcert.pem
Dies erstellt die Datei ihreDatei-clcert.pem welche das Zertifikat in folgendem Block enthält:
-----BEGIN CERTIFICATE-----
MII...
-----END CERTIFICATE-----

Sie können diesen Block nun kopieren und in WebserviceTool einfügen.

Um den privaten Schlüssel zu extrahieren geben Sie folgende Befehle ein:
openssl pkcs12 -nocerts -in ihreDatei.p12 -out ihreDatei-private.pem
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in ihreDatei-private.pem -out ihreDatei-private_pkcs8.pem

Dies erstellt die Datei ihreDatei-private_pkcs8.pem welche den unverschlüsselten privaten Schlüssel in folgendem Block enthält:
-----BEGIN PRIVATE KEY-----
MII...
-----END PRIVATE KEY-----

Sie können diesen Block nun kopieren und in WebserviceTool einfügen.

Da die Datei ihreDatei-private_pkcs8.pem den privaten Schlüssel in unverschlüsseltem Format enthält, löschen Sie anschliessend diese Datei und wählen Sie ein sicheres Passwort für Ihre Webservice Datei (.ws5), damit Ihr privater Schlüssel gut geschützt bleibt.

Zum Anfang

Multi-User Nutzung ab zentraler Installation

Mehrere Benutzer können die Applikation ab einer zentralen Installation starten und die gemeinsamen Webservice Definitionsdateien benutzen. Hierzu unterstützt die Applikation folgende Funktionalitäten:

  • Installation in ein zentrales, gemeinsames Verzeichnis durch Verwendung der manuellen Installationsmethode (WebserviceTool_win32manual.zip)
  • Das Datei-Locking bei .ws5 Dateien verhindert, dass die Benutzer sich gegenseitig ihre Änderungen überschreiben. Der Lock-Status kann unter Datei > Infos abgefragt werden und er wird im ersten Reiter angezeigt: [W] = Sie können schreiben, [R] = Sie können nur lesen, [F] = Sie können den Schreib-Lock jetzt übernehmen, [f] = Sie können den Schreib-Lock nach einem Neu-Laden der .ws5 Datei übernehmen
  • Um jedem Benutzer die Verwendung seiner eigenen Kopien der Anfragedateien und Logdateien zu ermöglichen, kann im Pfad des Anfrageverzeichnisses eine Umgebungsvariable (z.B. %USERNAME%) verwendet werden. Diese Umgebungsvariable muss gesetzt sein, bevor die Applikation gestartet wird.
  • Schutz vor Modifikationen mit Passwort
  • Unterdrückung von Passwörtern in Logs

Zum Anfang

Automatisierung mit BeanShell Scripts

Mit BeanShell Scripts (www.beanshell.org) können ganze Abläufe automatisiert werden im GUI und von der Kommandozeile. Die Scripts müssen die Erweiterung .bsh haben, müssen im UTF-8 Zeichensatz geschrieben und anschliessend signiert werden. Wenn Sie zum Schreiben nicht den internen Editor verwenden wollen, müssen Sie die fertigen Scripts am Ende mit dem internen Editor öffnen und speichern, damit das Script dann korrekt signiert ist.

In den Einstellungen können Sie definieren, dass Sie Scripts mit fremder Signatur bestätigen wollen, bevor sie ausgeführt werden. Wenn Sie zudem angeben, dass Sie die bestätigten Script-Signaturen cachen wollen, werden Ihre Bestätigungen gespeichert (in %userprofile%\WebserviceTool\SignatureCache.properties), so dass Sie unveränderte Scripts nicht erneut bestätigen müssen.
In den Einstellungen können Sie auch Regex Ausdrücke definieren, mit denen Sie Fehlermeldungen in der Script Console matchen können. Mit dem Knopf "Gehe zu Fehler" in der Script Console können Sie dann das Script im Editor aufrufen und gleich zur fehlerhaften Zeile springen. Sie können mehrere Regex Ausdrücke definieren, 1 pro Zeile. Die Ausdrücke müssen eine Gruppe <filename> und optional eine Gruppe <linenumber> enthalten. In den Standard-Einstellungen finden Sie einige Beispiele dazu.

Sie können in den Scripts alle Klassen der Eve Class Library und der weiteren integrierten Java Libraries verwenden (siehe separate API Dokumentation).

Beispiel für ein GUI Script:

this.interpreter.setStrictJava(true);
import ch.tanapro.WebserviceTool.api.*;
import bsh.*;
import nanoxml.*;

ApiWebserviceFile awsf;
ApiRequest req;
ApiResponse resp;
String token;
boolean ok;
int rc;

// checks for error and cleans up in case of error
boolean fnCheckForError()
{
  if (API.lastError == null) return false;
  System.out.println(API.lastError); 
  return true;
}

// main script
System.out.println("Starting GUI script");
if (!API.isGuiAvailable())
{
  System.out.println("This script can only run from the GUI");
  return;
}

// get currently open webservice file
awsf = API.wsFile;

// get request
req = API.getRequestByID (1454686907404L); // the id can be found in File -> Infos
if (fnCheckForError()) return;
System.out.println("Token request loaded successfully");

// let the user enter the token data
rc = API.guiEditRequest(req);
if (rc==1) API.lastError="Cancelled by user";
if (fnCheckForError()) return;

// invoke token request
System.out.println("Sending token request...");
resp = API.invokeRequest (req, null);
if (fnCheckForError()) return;
System.out.println("Token request invoked successfully");

// show in GUI
rc = API.guiShowInGUI(req, resp, "");
if (fnCheckForError()) return;

// get token from response
System.out.println("Getting token");
XMLElement xml = API.getXMLElementByXpath(resp.xResponse, "/REST/XML/access_token");
if (xml==null) API.lastError="Token not found";
if (fnCheckForError()) return;
token = xml.getContent();
System.out.println("Token found successfully");

// get request selected in GUI
System.out.println("Invoking request #"+awsf.selectedRequest);
req = API.getRequestByID (awsf.selectedRequest);
if (fnCheckForError()) return;
System.out.println("Request loaded successfully");

// let the user enter the request data
rc = API.guiEditRequest(req);
if (rc==1) API.lastError="Cancelled by user";
if (fnCheckForError()) return;

// invoke request
System.out.println("Setting token...");
req.setHeaderField ("Authorization", "bearer "+token); // set access token
System.out.println("Sending request...");
resp = API.invokeRequest (req, null);
if (fnCheckForError()) return;
System.out.println("Request invoked successfully");

// show in GUI
rc = API.guiShowInGUI(req, resp, "b");
if (fnCheckForError()) return;

Um ein Script von der Kommandozeile zu starten, muss das Programm wie folgt gestartet werden:
java -cp eve.jar Eve WebserviceTool.eve -S scriptfile.bsh
oder
eve WebserviceTool.eve -S scriptfile.bsh
Eine komplette Liste der verfügbaren Programmparameter erhalten Sie mit dem Parameter -?

Beispiel für ein Kommandozeilen-Script:

this.interpreter.setStrictJava(true);
import ch.tanapro.WebserviceTool.api.*;
import java.util.Vector;
import bsh.*;
import nanoxml.*;

ApiWebserviceFile awsf=null;
ApiRequest req;
ApiResponse resp;
Vector vInput, vData;
boolean ok;

// checks for error and cleans up in case of error
boolean fnCheckForError()
{
  if (API.lastError == null) return false;
  System.out.println(API.lastError); 
  if (awsf!=null) API.closeWebserviceFile();
  return true;
}

// main script
System.out.println("Starting commandline script");

awsf = API.loadWebserviceFile(API.webserviceFile, "N7YExq7qhDbFLkMyYPxN2h7zk83Nse/+JQvuQw00IZnZPJPQWJRELGcqPr2YBpwc1x/q3vN7I11RdAZWW062PaBOvOZYLJbfZa2V4IOSYAP+juy8XGiH/+qHYpGodqro");
if (fnCheckForError()) return;
// get the key with:
// System.out.println(API.getEncryptedKey("the password for the webservice file"));

req = API.getRequestByID (1454402306498L);
if (fnCheckForError()) return;

vInput = API.readInputFile(API.inputFile); // Vector of Vectors of String
if (fnCheckForError()) return;
vData = (Vector) vInput.get(0); // Vector of Strings
resp = API.invokeRequest (req, vData);
if (fnCheckForError()) return;

// You can get the response like this:
// String response = resp.xResponse.toString();

System.out.println("Saving logs...");
resp.saveLogs();

API.closeWebserviceFile();

Mehr Details zum API finden Sie in der separaten API Dokumentation.

Einschränkungen

Diese Funktion hängt vom Typ der Lizenz ab, die Sie gekauft haben und ist daher möglicherweise für Sie nicht verfügbar.

Zum Anfang

WebserviceTool starten mit Kommandozeilen-Optionen

Starten Sie WebserviceTool mit

java -cp eve.jar Eve WebserviceTool.eve [Optionen]
   oder: 
javaw -cp eve.jar Eve WebserviceTool.eve [Optionen]
   oder: 
evew WebserviceTool.eve [Optionen]
   oder: 
eve  WebserviceTool.eve [Optionen]

Verwenden Sie javaw.exe/evew.exe für den GUI Modus und java.exe/eve.exe für den Konsolenmodus.

Verfügbare Optionen:
[-?], zum Anzeigen der Kommandozeilen-Optionen
[-d], zum Aktivieren des Debuggings
[-F <Schriftgrösse>] (default = automatisch)
[-W <webserviceFile.ws5>]
[-S <scriptFile.bsh>]
[-U <username>], nur zusammen mit -S
[-P <password>], nur zusammen mit -S
[-I <inputFile>], nur zusammen mit -S
[-O <outputFile>], nur zusammen mit -S

Folgende Exit Codes werden zurückgegeben:
0 = OK
1 = Warnung
2 = Fehler
Der Exit Code kann in einem Skript gesetzt werden durch
API.setScriptResultCode(int code)

Wenn Sie WebserviceTool unter Windows verwenden, dann sollten Sie es aus einer Batchdatei starten und vorher folgenden Befehl einfügen:
set J2D_D3D=false
Dies erhöht massiv die Grafikleistung auf vielen Systemen.
Generell läuft WebserviceTool mit der JavaVM 3 bis 4 schneller als mit der EveVM.

Zum Anfang

Fehlersuche und -behebung

Wenn Sie beim Arbeiten mit dem Programm Probleme feststellen, können Sie den Debug Modus aktivieren. In diesem Modus sammelt das Programm bei gewissen Operationen zusätzliche Informationen, welche Sie sich danach anzeigen lassen können. Diese Informationen können Ihnen helfen, herauszufinden wo das Problem liegt.
Wenn das Programm startet, ist der Debug Modus immer inaktiv. Das Programm merkt sich den Zustand des Debug Modus nicht.

Zum Anfang

Additional information