Benutzer-Werkzeuge

Webseiten-Werkzeuge


develop:xmlrpc:init

Dies ist eine alte Version des Dokuments!


Beispiel-Code Java

Das folgende Beispiel ermittelt die Liste der Konten aus Hibiscus. Sie benötigen hierzu das Modul Apache XML-RPC. Ersetzen Sie die Werte in spitzen Klammern (z.Bsp. “<Master-Passwort>”) gegen die von Ihnen genutzten Werte.

import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
 
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
 
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
 
 
public class Test
{
  public static void main(String[] args) throws Exception
  {
    String url = "https://<Servername>:8080/xmlrpc/";
 
    // Client-Config erzeugen
    XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
    config.setBasicPassword(<Master-Passwort>);
    config.setBasicUserName("admin");
    config.setServerURL(new URL(url));
 
    if (url.startsWith("https"))
      disableCertCheck();
 
    XmlRpcClient client = new XmlRpcClient();
    client.setConfig(config);
 
    Object[] lines = (Object[]) client.execute("hibiscus.xmlrpc.konto.list",null);
    if (lines == null)
      return; // Kein Ergebnis erhalten
 
    for (int i=0;i<lines.length;++i)
    {
      System.out.println(lines[i]);
    }
  }
 
  /**
   * Falls HTTPS aktiviert ist, muessen Sie entweder Java das Jameica-Zertifikat
   * (Datei->Einstellungen->Zertifikate) bekannt machen. Sie können es mit dem
   * bei SUN Java mitgelieferten Programm [[http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html|keytool]]
   * importieren oder (NUR ZU TESTZWECKEN!) die Zertifikats-Prüfung abschalten.
   * Die folgende Funktion tut dies.
   * @throws Exception
   */
  private static void disableCertCheck() throws Exception
  {
    TrustManager dummy = new X509TrustManager()
    {
      public java.security.cert.X509Certificate[] getAcceptedIssuers(){return null;}
      public void checkClientTrusted (X509Certificate[] certs, String authType) {}
      public void checkServerTrusted(X509Certificate[] certs, String authType) {}
    };
 
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, new TrustManager[]{dummy}, new SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    HostnameVerifier dummy2 = new HostnameVerifier() {
      public boolean verify(String host, SSLSession session) {return true;}
    };
    HttpsURLConnection.setDefaultHostnameVerifier(dummy2); 
  }
}

Beispiel-Code Perl

Das folgende Beispiel ermittelt die Liste der Konten aus Hibiscus. Sie benötigen hierzu das CPAN-Modul RPC::XML. Ersetzen Sie die Werte in spitzen Klammern (z.Bsp. „<Master-Passwort>“) gegen die von Ihnen genutzten Werte.

#!/usr/bin/perl
 
use strict;
use RPC::XML;
use RPC::XML::Client;
 
my $cli = RPC::XML::Client->new('https://<servername>:8080/xmlrpc/');
$cli->credentials("XML-RPC","admin","<Master-Passwort>");
 
my $resp = $cli->send_request('hibiscus.xmlrpc.konto.list');
 
die("Keine Antwort vom Server erhalten") unless ($resp);
die("Fehler: ".$resp) unless (ref($resp)); # kein korrektes Response-Objekt
 
my $konten = $resp->value;
for(@{$konten})
{
  print $_."\n";
}

Achtung: $resp→value liefert nicht das Array selbst sondern eine Referenz darauf.

Dieses Beispiel erstellt eine neue Lastschrift:

#!/usr/bin/perl
 
use strict;
use RPC::XML;
use RPC::XML::Client;
 
my $cli = RPC::XML::Client->new('https://<servername>:8080/xmlrpc/');
$cli->credentials("XML-RPC","admin","<Master-Passwort>");
 
 
my @params = (
  RPC::XML::string->new("1"),              # ID des Kontos
  RPC::XML::string->new("1234567890"),     # Kontonummer Gegenkonto
  RPC::XML::string->new("12345678"),       # BLZ des Gegenkontos
  RPC::XML::string->new("Max Mustermann"), # Inhaber Gegenkonto
  RPC::XML::string->new("Test"),           # Verwendungszweck 1
  RPC::XML::string->new(""),               # Verwendungszweck 2 (optional)
  RPC::XML::double->new(100.99),           # Betrag (Achtung - Punkt statt Komma!)
  RPC::XML::string->new(""),               # Termin im Format dd.mm.yyyy (optional)
  RPC::XML::string->new("05")              # Einzugsermaechtigung
);
my $resp = $cli->send_request('hibiscus.xmlrpc.lastschrift.create',@params);
 
die("Keine Antwort vom Server erhalten") unless ($resp);
 
if ($resp =~ /ex:nil/i)
{
  # Auftrag erfolgreich angelegt, wenn NULL (= "ex:nil" in XML-RPC)
  # zurueckgeliefert wurde.
  print "Auftrag erfolgreich angelegt\n";
}
else {
  print ref($resp)."\n";
  die($resp->value);
}

Beispiel-Code PHP

Das folgende Beispiel ermittelt die Liste der Konten aus Hibiscus. Sie benötigen hierzu das PHP-Modul XML-RPC. Ersetzen Sie die Werte in spitzen Klammern (z.Bsp. “<Master-Passwort>”) gegen die von Ihnen genutzten Werte.

include("lib/xmlrpc.inc");
$client = new xmlrpc_client("https://admin:<Master-Passwort>@<Servername>:8080/xmlrpc/");
$client->setDebug(0); // alternativ auch "1" oder "2"
 
// Wenn im folgenden Parameter "1" steht, müssen Sie vorher das SSL-Zertifikat aus
// Jameica exportieren (Datei->Einstellungen->Zertifikate), es anschliessend mit
// "openssl x509 -inform DES -in <datei>.crt -out outcert.pem -text" konvertieren und dann
// an "/usr/share/curl/curl-ca-bundle.crt" anhängen (Curl wird von PHP intern für
// HTTP-Kommunikation verwendet)
// Verwenden Sie "0", wenn der Hostname des Server-Zertifikats (Common-Name, CN) nicht geprüft werden soll.
$client->setSSLVerifyHost(1);
 
// Aktiviert/deaktiviert die Prüfung des Server-Zertifikates.
$client->setSSLVerifyPeer(1);
 
$msg = new xmlrpcmsg("hibiscus.xmlrpc.konto.list");
$response = $client->send($msg);
 
if (!response)
{
  print("Keine Antwort vom Server erhalten\n");
  exit(1);
}
if ($response->faultCode())
{
  print("Fehler. Code: ".$response->faultCode()." ".$response->faultString()."\n");
  exit(1);
}
 
$value = $response->value();
$konten = $value->scalarval();
 
while ($konto = current($konten))
{
  print($konto->scalarval()."\n");
  next($konten);
}


Impressum | Datenschutz
develop/xmlrpc/init.1297096572.txt.gz · Zuletzt geändert: d.m.Y H:i von willuhn