GOV/Webservice
Über mehrere Webserivces erhält man praktische den gleichen Zugriff auf die Daten des GOV, wie ihn auch das Webfrontend bietet.
Dienste
Welche Dienste werden von den Webservices zur Verfügung gestellt? Es gibt drei verschiedenen Webserivces:
- SimpleService - als Suchergebnis werden Listen mit GOV-Kennungen zurückgeliefert
- ComplexService - als Suchergebnis werden Listen zurückgeliefert, die die Objekte selbst enthalten
- ChangeService - mit diesem Dienst können Daten im GOV verändert werden
Lesezugriff
Die vom SimpleService und ComplexService zur Verfügung gestellten Funktionen sind (bis auf die Art des Rückgabewert) identisch, so daß sie hier gemeinsam beschrieben werden.
- checkObjectId
- prüft, ob eine Objektkennung gültig ist. Wenn die abgefragte Objektkennung durch eine andere ersetzt wurde, wird die neue Kennung zurückgeliefert. Wird ein leerer String zurückgeliefert, ist die Objektkennung ungültig.
- getArchive
- lädt ein Archiv-Objekt
- getChildObjects
- getName
- getObject
- lädt ein Ort-Objekt
- getRecordsForObject
- getSource
- lädt ein Quellen-Objekt
- listTopLevelObjects
- Liste aller Orte, die keinem anderen Objekt zugeordnet sind
- lookupObject
- für FOKO
- searchByBoundingBox
- sucht Orte, die innerhalb einer geographischen Region liegen. Parameter: Breite der einen Ecke, Breite der anderen Ecke, Länge der einen Ecke, Länge der anderen Ecke
- searchByName
- Suche Orte anhand ihres Namens (wie die Suche im Frontend)
- searchDescendantsByName
- searchDescendantsByName1
- searchDescendantsByType1
- searchRelatedByName
Schreibzugriff
Der Schreibzugriff ist relativ übersichtlich, der beinhaltet drei Operationen zum Speichern von Orten, Quellen und Archiven. Als erster Parameter wird das zu speichernde Objekt übergeben, der zweite und dritte Parameter sind Benutzernamen und Paßwort des Bearbeiters.
- saveObject
- saveSource
- saveArchive
Kompatibilität
Mit folgenden Frameworks wurde der GOV-Webserivce getestet:
Framework und Version | getestet | vollständig getestet | Bemerkungen | Benutzer |
Axis 1.1 | mit Java 1.4 | Jzedlitz | ||
Axis 1.4 | beim Klassen-Generieren Option "-w" | Jzedlitz | ||
PHP 5 | Jzedlitz | |||
Python ZSI 1.7.0 | bei mir hat es nur mit einfachen Rückgabewerten funktioniert | Jzedlitz |
Client
PHP 5
Mit PHP 5 ist ein Client für den GOV-Webservice ganz schnell geschrieben: <php><?php $soapclient = new SoapClient('http://gov.genealogy.net/services/ComplexService?wsdl'); $list =$soapclient->searchByName('Heidkate'); /* Ausgabe des Arrays */ print_r($list); ?></php> Ja, das ist alles! :-)
Axis 1.3, Axis 1.4
WSDL2Java hat Probleme mit dem Element-Namen "last-modification". Komischerweise funktioniert es richtig, wenn man WSDL2Java die Option "-w" mitgibt.
Generieren der Java-Klassen:
java org.apache.axis.wsdl.WSDL2Java -w http://gov.genealogy.net/services/ComplexService?wsdl
Ein kleiner Test-Client: <java>import net.genealogy.gov.ws.ComplexService_PortType; import net.genealogy.gov.ws.ComplexService_ServiceLocator;
public class Client {
public static void main(String[] args) throws Exception { ComplexService_PortType cs = new ComplexService_ServiceLocator() .getComplexService();
cs.searchByName("Heidkate"); }
}</java>
SOAP-Nachrichten
Zum Debuggen habe ich hier die übertragenen SOAP-Nachrichten eingefügt, wie sie von verschiedenen Webservice-Frameworks generiert werden.
Axis 1.4
<xml><?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body> <searchByName xmlns="http://gov.genealogy.net/ws"> <placename xmlns="">Heidkate</placename> </searchByName> </soapenv:Body>
</soapenv:Envelope></xml>
PHP 5
<xml><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://gov.genealogy.net/ws">
<SOAP-ENV:Body> <ns1:searchByName> <placename>Heidkate</placename> </ns1:searchByName> </SOAP-ENV:Body>
</SOAP-ENV:Envelope></xml>