XML API

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

erniesesam

Re: XML API

Beitrag von erniesesam » 22.05.2015, 10:45

Du solltest alles mit einem Leer-String beantworten, nicht mit null.
Also statt callback(null, null) solltest Du callback(null, "") aufrufen in Deinen Event-Handlern.

Und natürlich sicherstellen dass Du das richtige Protokoll verwendest. Nimmst Du BINRPC meldest Du beim Init deinen Server mit xmlrpc_bin:// an, nimmst Du XML-RPC meldest Du http:// an.

Stephan18
Beiträge: 15
Registriert: 17.05.2015, 22:12

Re: XML API

Beitrag von Stephan18 » 22.05.2015, 13:21

Danke erstmal für deine Antwort.
Ich nutzte die XMLRPC, deshalb denke ich, dass der init passt:

rpcClient.methodCall('init', ["htp://192.168.178.76:8085", "smarthomeserver"], function (err, data) {

mit dem Antworten, habe ich sehr sehr viel durch. Ich habe einmal das Versucht:

Code: Alles auswählen

        rpcServer.on('system.multicall', function (method, params, callback) {
            var response = [];
            for (var i = 0; i < params[0].length; i++) {
	    	response.push('');
            }
            console.log(response);
            callback(null, response);
        });
und dies:

Code: Alles auswählen

        rpcServer.on('system.multicall', function (method, params, callback) {

            callback(null, '');
        });
bei beiden Varianten, erhalte ich dieselbe Fehlermeldung :(

Edit: Die Zentrale erreicht mich aber auch! Ich habe ein console.log eingebaut, somit "sehe" ich, dass die Zentrale mir was schickt und prinzipiell ja durch kommt.

Stephan18
Beiträge: 15
Registriert: 17.05.2015, 22:12

Re: XML API

Beitrag von Stephan18 » 23.05.2015, 02:07

Hallo,

Für alle "Nachfolger", die dieses Problem bekommen, poste ich hier einmal die Auflösung.

ich nutze das node-modul xmlrpc. Dies ist fix und fertig und wird von einigen Anwendungen genutzt.
In diesem Modul ist in der server.js folgendes Definiert:

Zeile 51 und 52

Code: Alles auswählen

          response.writeHead(200, {'Content-Type': 'text/xml'})
          response.end(xml)
Dies einfach abändern in folgendes:

Code: Alles auswählen

          response.writeHead(200, {'Content-Type': 'text/xml'})
          response.writeHead(200, {'Content-Length': xml.length})
          response.end(xml)
Danach war bei mir die Fehlergenerierung behoben und ich erhalte auch mehr Push-Nachrichten als die berühmten 10.

Zudem war bei mir im init das Protokoll falsch. statt "http" stand dort "htp". Dies führte aber nicht zum Fehler. Das habe ich wesentlich früher behoben und der Fehler blieb leider.

Ich danke allen bis hierher für die Hilfe. Bin dadurch schon sehr viel weiter als gerechnet.

Gruß Stephan

Anmerkung: In den Funktionen muss überall die callback Funktion aufgerufen werden. Die Zentrale wartet auf eine Antwort. Wird die Funktion nicht aufgerufen, friert die Zentrale komplett ein. Bei mir ging das so weit, das selbst das WebUI nicht mehr reagierte.

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“