Benutzer-Werkzeuge

Webseiten-Werkzeuge


develop:xmlrpc:init

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
develop:xmlrpc:init [d.m.Y H:i] – [PHP] willuhndevelop:xmlrpc:init [d.m.Y H:i] (aktuell) – [PHP] willuhn
Zeile 1: Zeile 1:
 +====== XML-RPC Verbindungsaufbau ======
 +
 +Beispiel-Code für den Verbindungsaufbau via XML-RPC
 +
 +===== Java =====
 +
 +Sie benötigen hierzu das Modul [[http://ws.apache.org/xmlrpc/|Apache XML-RPC]]. Ersetzen Sie die Werte in spitzen Klammern (z.Bsp. "<Master-Passwort>") gegen die von Ihnen genutzten Werte.
 +
 +<code java>
 +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 result = client.execute("<Name der XML-RPC-Funktion>",<Parameter>);
 +  }
 +
 +  /**
 +   * 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); 
 +  }
 +}
 +</code>
 +
 +
 +
 +===== Perl =====
 +
 +Sie benötigen hierzu das CPAN-Modul [[http://search.cpan.org/dist/RPC-XML/|RPC::XML]]. Ersetzen Sie die Werte in spitzen Klammern (z.Bsp. "<Master-Passwort>") gegen die von Ihnen genutzten Werte.
 +
 +<code perl>
 +#!/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('<Name der XML-RPC-Funktion>',<Parameter>);
 +</code>
 +
 +===== PHP =====
 +
 +Sie benötigen hierzu das PHP-Modul [[http://phpxmlrpc.sourceforge.net/|XML-RPC]] sowie die PHP-Unterstützung für [[http://php.net/manual/de/book.curl.php|Curl]]. Ersetzen Sie die Werte in spitzen Klammern (z.Bsp. “<Master-Passwort>”) gegen die von Ihnen genutzten Werte.
 +
 +<code php>
 +
 +include("lib/xmlrpc.inc");
 +
 +// Ggf. ist es noetig, das Encoding explizit zu setzen, mit dem
 +// die XML-RPC-Implementierung von PHP die Daten liest:
 +$GLOBALS['xmlrpc_internalencoding']='UTF-8';
 +
 +$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("<Name der XML-RPC-Funktion>",<Parameter>);
 +$response = $client->send($msg);
 +
 +// Ergebnis auswerten, z.Bsp.:
 +print($response->value()->scalarval());
 +
 +// Alternativ Fehlermeldung ausgeben
 +print($response->faultString());
 +</code>
 +
 +===== Python =====
 +
 +
 +<code python>
 +
 +
 +#!/usr/bin/env python
 +
 +import xmlrpclib
 +
 +class HibiscusSocket(object):
 +
 +  def __init__(self, password,xmlrpc_host="localhost",xmlrpc_port=8080,proto="https",username="admin"):
 +  
 +    self.proto=proto
 +    sock = xmlrpclib.ServerProxy ('%s://%s:%s@%s:%s/xmlrpc/' % (
 +        self.proto, username, password, xmlrpc_host, xmlrpc_port))
 +    self.sock = sock
 +
 +  def get_bank_name(self,blz):
 +    return self.sock.hibiscus.xmlrpc.konto.getBankname(str(blz))
 +    
 +s = HibiscusSocket(password="secret123")
 +bankname = s.get_bank_name(blz="37010050") # bankname sollte jetzt sein "Postbank"
 +</code>
  


Impressum | Datenschutz