Web Service Code-Beispiele
Copyright 2016 Lexmark. All rights reserved. Lexmark is a trademark of Lexmark International, Inc., registered in the U.S. and/or other countries. All other trademarks are the property of their respective owners. No part of this publication may be reproduced, stored, or transmitted in any form without the prior written permission of Lexmark.
Inhaltsverzeichnis 1 Beispiel: Login... 1.1 AuthenticationService-Stubs erzeugen... 1.2 Anmeldung eines Benutzers... 1.3 Dokumentenarchivierung... 1.4 Dokumentensuche... 1.5 Laden eines Dokumenteninhalts... 2 2 3 3 5 5
2 Web Service Code-Beispiele In den folgenden Kapiteln erhalten Sie anhand einiger Code-Beispiele die Erläuterung, wie der SAPERION Web Service eingesetzt wird. Wir beziehen uns hierbei auf die Anwendung von IDE Visual Studio 2008 und der C#-Programmiersprache. 1 Beispiel: Login Das Login-Beispiel verwendet den Dienst "AuthenticationService" am Endpunkt <URL>/scr-webservices/soap/AuthenticationService und diewsdl-datei <URL>/scr-webservices/soap/AuthenticationService?wsdl. Visual Studio erzeugt automatisch alle notwendigen Stubs, um den Web Sercvice aufzurufen. 1.1 AuthenticationService-Stubs erzeugen Um die AuthenticationService-Stubs zu erzeugen, gehen Sie wie folgt vor: 1. 2. Öffnen Sie Ihr Visual Studio-Projekt und klicken Sie auf "Web References" in dem Solution-Explorer. Wählen Sie den Eintrag "Add Web Reference". Geben Sie in den sich öffnenden Dialog die URL des AuthenticationService von der WSDL-Datei an. Abb. 1 1: Dialog "Add Web Reference" 3. 4. Klicken Sie auf [Go] und geben anschließend einen Namen für die Web Referenz ein. Klicken Sie auf [Add Reference]. Visual Studio erzeugt nun alle notwendigen Klassen, um die AuthenticationService Web Service-Calls auszuführen.
1 Beispiel: Login 1.2 Anmeldung eines Benutzers Das folgende Code-Beispiel erläutert die Anmeldung eines Benutzers per SAPERION Web Service. using System; using System.Collections.Generic; using System.Text; namespace webservice_nunits.guide class ExampleUserLogin /* Logs in the user with the given values against the SAPERION AuthenticationService. */ public int loginuser(string username, String password, int licensetype, String mandant) try AuthService.SaWsAuthenticationServiceService service = new AuthService.SaWsAuthenticationServiceService(); int token = service.login(username, password, licensetype, mandant); System.Diagnostics.Trace.WriteLine("Logged in user: " + username + ". Retrieved token: " + token); //return token for further usage. return token; catch (System.Exception ex) System.Diagnostics.Trace.WriteLine("Exception while trying to login: " + ex.message); return 0; 1.3 Dokumentenarchivierung Um Dokumente zu archivieren, wird der Dienst "ArchiveService" verwendet. Bitte führen Sie die in Kapitel "AuthenticationService-Stubs erzeugen" beschriebenen Schritte durch und fügen die folgende URL zu der "ArchiveService" Web Referenz: WSDL URL <URL>/scr-webservices/soap/ArchiveService?wsdl. Vergeben Sie der Web Referenz einen Namen, z.b. "ArchiveService". Das folgende Code-Beispiel illustriert, wie ein Dokument per SAPERION Web Service archiviert wird: using System; using System.Collections.Generic; using System.Text; 3
4 namespace webservice_nunits.guide using webservice_nunits.archiveservice; class ExampleArchivation public String archive(int token, String ddc, String content, String comment) //instantiate service SaWsArchiveServiceService archiveservice = new SaWsArchiveServiceService(); //document meta data sawsproperty[] metadata = new sawsproperty[1]; sawsproperty metaone = new sawsproperty(); metaone.name = "name1"; metaone.value = "value1"; metadata[0] = metaone; //contents sawscontent[] contents = new sawscontent[0]; sawscontent contentstream = new sawscontent(); contentstream.content = Encoding.ASCII.GetBytes(content); contentstream.filename = "test.txt"; contents[0] = contentstream; sawscontentcontainer container = new sawscontentcontainer(); container.content = contents; container.mode = mode.replace; //perform webservice call sawssaveinfo saveinfo = archiveservice.create(token, ddc, metadata, container, comment, ""); return saveinfo.hdoc; Metadaten eines Dokuments werden durch ein sawsproperty-array geliefert (vorausgesetzt, die vorhandene DDC hat Metadaten mit dem Namen "name1") und der Dokumenteninhalt als sawscontentcontainer. In diesem Beispiel ist der Inhaltstring zu einem Byte-Array umgewandelt und die dazugehörigen Dateinamen auf "test.txt" gesetzt. Der letzte Parameter der Erzeugungsmethode ist ein leerer String, der darauf hinweist, dass der Zugriff auf das Dokument nicht durch eine ACL eingeschränkt ist. Anderenfalls würde der Name der ACL hier aufgeführt werden.
1 Beispiel: Login 1.4 5 Dokumentensuche Auch die Dokumentensuche erfolgt über den " ArchiveService"-Dienst, daher sind keine zusätzlichen Web Referenzen hierfür notwendig. Das folgende Code-Beispiel zeigt eine Dokumentensuche per SAPERION Web Service an: using System; using System.Collections.Generic; using System.Text; namespace webservice_nunits.guide using webservice_nunits.archiveservice; class ExampleSearch public sawspropertyvaluearray[] searchdocuments(int token, String ddc) //instantiate service SaWsArchiveServiceService archiveservice = new SaWsArchiveServiceService(); //prepare HQL query String hql = " from " + ddc; //perform search sawspropertyvaluearray[] results = archiveservice.search(token, hql); System.Diagnostics.Trace.WriteLine("Searched " + results.length + " documents with the query: " + hql); return results; In diesem Beispiel werden alle Dokumente durch die vorhandene DDC gesucht und als sawspropertyvaluearray-array zurück gegeben. Die Suche wird durch Angabe einer gültigen HQL-Abfrage durchgeführt. 1.5 Laden eines Dokumenteninhalts Das Laden eines Dokumenteninhalts erfolgt über den Dienst " ContentService". Führen Sie deshalb die Schritte zur Erzeugung einer Web Referenz (wie in Kapitel "AuthenticationService-Stubs erzeugen" beschrieben) durch. Geben Sie die WSDL URL Ihrer "ContentService" <URL>/scr-webservices/soap/ContentService?wsdl. Web Geben Sie der Web Referenz einen Namen wie z.b. "ContentService". Referenz wie folgt an:
6 Das folgende Beispiel illustriert, wie der Inhalt eines spezifischen Dokuments geladen wird: using System; using System.Collections.Generic; using System.Text; namespace webservice_nunits.guide using webservice_nunits.contentservice; class ExampleContentRetrieval public sawscontent getcontent(int token, String hdoc, int elementnumber) //instantiate service SaWsContentServiceService contentservice = new SaWsContentServiceService(); //get content sawscontent content = contentservice.getcontent(token, hdoc, elementnumber); System.Diagnostics.Trace.WriteLine("Retrieved content number " + elementnumber + " of document " + hdoc + ". Filename: " + content.filename); //return content return content; Dokumente werden anhand ihrer Dokumenten-ID (HDOC) und der Elementnummer eines strukturierten Dokuments gefunden. Das sawscontent-objekt enthält den Dateinamen und ein Byte [], das den Inhalt repräsentiert.