Da ich momentan eine Lösung gesucht habe um aus node.js eine XML-RPC Konforme Nachricht zu senden, stiess ich auf folgenden Ansatz.
Das Script für den XML-RPC Server ist hier zu finden.
Zuerst wird das modul “xmlrpc” benötigt. Dieses laden wir mit dem NPM Paketmanager nach.
npm install xmlrpc
Das benötigte Modul findet man nun unter
xmlrpc/lib/
Beispiel Script
/* XML-RPC CLient */
/* Modul laden */
var fs = require('fs')
, xmlrpc = require('./xmlrpc/lib/node-xmlrpc.js')
// XML-RPC Client Optionen festlegen
var clientOptions = {
host: 'localhost'
, port: 1337
, path: '/'
}
// Man kann die Optionen auch als String uebergeben
// var clientOptions = 'http://localhost:1337'
var client = xmlrpc.createClient(clientOptions)
// HTTPS kann folgendermassen verwendet werden
/*
var secureClientOptions = {
host: 'localhost'
, port: 443
, path: '/'
}
var client = xmlrpc.createSecureClient(secureClientOptions)
*/
client.methodCall('setArray', [['value1', 'value2']], function(error, value) {
client.methodCall('getArray', null, function (error, value) {
console.log('Get Array Response: ' + value)
})
})
/*
Verschiedene Beispiel Methoden
*/
// Einen Booleschen Wert senden
client.methodCall('setBoolean', [true], function (error, value) {
client.methodCall('getBoolean', null, function (error, value) {
console.log('Get Boolean Response: ' + value)
})
})
// Ein Datumswert senden
client.methodCall('setDate', [new Date(2016, 05, 08, 11, 35, 10)], function (error, value) {
client.methodCall('getDate', null, function (error, value) {
console.log('Get Date Response: ' + value)
})
})
client.methodCall('setDouble', [24.99], function (error, value) {
client.methodCall('getDouble', null, function (error, value) {
console.log('Get Double Response: ' + value)
})
})
// Einen Integer Zahlenwert senden
client.methodCall('setInteger', [23], function (error, value) {
client.methodCall('getInteger', null, function (error, value) {
console.log('Get Integer Response: ' + value)
})
})
// Einen String senden
client.methodCall('setString', ['testString1'], function (error, value) {
client.methodCall('getString', null, function (error, value) {
console.log('Get String Response: ' + value)
})
})
// Mehrere Werte als Object definieren
client.methodCall('setStruct', [{ nameOfValue: 'Go 1998!' }], function (error, value) {
client.methodCall('getStruct', null, function (error, value) {
console.log('Get Struct Response (on next line): ')
console.log(value)
})
})
// Einen null Wert senden
client.methodCall('fakeFault', null, function (error, value) {
console.log('Fake Fault Response as Error (on next line): ')
console.log(error)
})
