Ich meine zwar mein Problem liegt eher am XMLRPC-Modul, aber da ich die erhaltene XML-Nachricht jetzt auslesen (parsen?) will schreibe ich mal hier rein.
Mein XMLRPC-Server:
Code: Alles auswählen
from SimpleXMLRPCServer import SimpleXMLRPCServer
from threading import Thread
import socket
socket.setdefaulttimeout(3) # Timeout auf 3 sec. setzen
import xmlrpclib
import sys, os, time
import xml_parse
#import create_xml
class XmlrpcHandler:
def mod_1 (self, xml_message_1):
# XML lesen und eine Adresse ('http//IP:Port') konstruieren
data = open ('message_1.xml', 'w')
data.write (xml_message_1)
data.close()
ip = xml_parse.xml_read(xml_message_1)
print ip
print xml_message_1
return xml_message_1
server = SimpleXMLRPCServer(("0.0.0.0", 50505), allow_none=True)
server.register_instance(XmlrpcHandler())
print "Der XMLRPC-Server horcht auf http://0.0.0.0:50505."
print "Er kann mit STRG+C beendet werden."
server.serve_forever()
<?xml version="1.0" encoding="iso-8859-1" ?>
- <reg_publish_message>
- <message_mod_1>
<modul1_ip>131.188.113.139</modul1_ip>
<modul1_port>8889</modul1_port>
<modul1_name>schrauber</modul1_name>
<modul1_need>torque</modul1_need>
<modul1_give>force</modul1_give>
</message_mod_1>
</reg_publish_message>
Beim versuch das Modul xml_parse.xml_read(xml_message_1) mit der Nachricht aufzurufen meldet er mir folgendes:
Traceback (most recent call last):
File "modul_1.py", line 47, in <module>
st.modul_1()
File "modul_1.py", line 34, in modul_1
server.mod_1(xml_message)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1147, in __call__
return self.__send(self.__name, args)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1437, in __request
verbose=self.__verbose
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1201, in request
return self._parse_response(h.getfile(), sock)
File "C:\Programme\Python25\lib\xmlrpclib.py", line 1340, in _parse_response
return u.close()
File "C:\Programme\Python25\lib\xmlrpclib.py", line 787, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: '<type \'exceptions.IOError\'>:[Errno 2] No such file or directory: \'<?xml version="1.0" encoding="iso-8859-1"?>\\n<reg_publish_message>\\.
Die Funktion xml_read(data) funktioniert wenn man die XML direkt übergibt, bloss will der RPC nicht.
Ich weiß nicht mehr weiter, wäre schön wenn jemand mir helfen könnte.
Vielen dank.
