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:

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:

Hinzufügen eines neuen Webservice

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

Hinzufügen einer neuen Anfrage

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

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

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:

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">Tom 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:

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:

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:

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