ich habe mir gedacht zu diesem Fehler einen neuen Thread abzumachen.
Bekomme folgenden Fehler:
class 'http.client.BadStatusLine'>
Leider weiß ich nicht, welche Zahl der Statuscode hat. Kann mir jemand helfen bzw. das Problem beheben?
Der Fehler tritt Clientseitig auf.
Genutzt wurde Python 3.2
XML-RPC-Server
Code: Alles auswählen
# coding: utf-8
from xmlrpc.server import SimpleXMLRPCServer
import sys
import os
import logging
import time
LINEBREAK = "-----------------------------------"
HOST = "10.1.0.43"
PORT = 9001
class xmlServer_init():
def __init__(self): # Konstruktor
print (LINEBREAK)
print ("XML-RPC-Server wird erstellt")
server = SimpleXMLRPCServer((HOST, PORT), allow_none=1)
server.register_function(self.get_params)
server.serve_forever()
def __del__(self): # Destruktor
print (LINEBREAK)
print ("XML-RPC-Server wird beendet")
def get_params(self, paramsHash):
print ("Folgende Daten erhalten...")
print (LINEBREAK)
print (paramsHash.items() )
#print LINEBREAK
xmlServer_exec(paramsHash)
class xmlServer_exec():
def __init__(self, paramsHash): # Konstruktor
print (LINEBREAK)
self.__create_wave_file(paramsHash)
self.__create_call_file(paramsHash)
def __del__(self): # Destruktor
print (LINEBREAK)
# Audiodatei wird erstellt
def __create_wave_file(self, paramsHash):
length = len(paramsHash)
#......Hier kommt belangloser Code..... --- Hat nichts mit dem Fehler zu tun
#......Belangloser code zu Ende......
print ("create call-file")
def main():
try:
xmlServer_init()
except:
# Es sind Fehler bei der Argumentuebergabe aufgetreten
print ("Serverfehler aufgetreten")
#logging.error("Folgender Fehler ist aufgetreten:")
#etype, evalue, tb = sys.exc_info()
#logging.error("%s" %(print_exception(etype, evalue, tb)))
#print_exception(etype, evalue, tb)
if __name__ == "__main__":
# Start der Main-Funktion
main()
XML-RPC-Client
Code: Alles auswählen
# coding: utf-8
import xmlrpc.client
import sys
import os
import socket
XMLRPC_SERVER = 'http://10.1.0.43:9001'
HOST = "10.1.0.43"
PORT = 9001
LINEBREAK = "--------------------------------------"
# Klasse XmlClient wird definiert
class xmlClient:
def __init__(self): # Konstruktor
print (LINEBREAK)
print ("Objekt wird erstellt...")
self.paramsHash = {}
def __del__(self): # Destruktor
print (LINEBREAK)
print ("Objekt wird zerstoert...")
def getArguments(self, argv): # Funktion
if len(sys.argv) == 6:
# Parameter werden zugeordnet
self.paramsHash["HOSTNAME"] = argv[0]
self.paramsHash["HOSTADDR"] = argv[1]
self.paramsHash["HOSTSTATE"] = argv[2]
self.paramsHash["HOSTOUTPUT"] = argv[3]
self.paramsHash["CONTACTPAGER"] = argv[4]
return self.paramsHash
else:
print ("#################################")
raise Exception("Anzahl der Argumente fehlerhaft.")
def is_alive(self): # Funktion
print (LINEBREAK)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.shutdown(2)
print ("XMLRPC-Schnittstelle ist auf %s:%s erreichbar..." %(HOST, PORT))
def sendParams(self, server, paramsHash): # Funktion
# Ruft die Funktion auf dem XMLRPC-Server auf
print (LINEBREAK)
print ("Argumente werden uebertragen....")
server.get_params(paramsHash)
print (LINEBREAK)
print ("...fertig...")
# Begin der Hauptfunktion
def main(argv):
try:
xml_client= xmlClient() # Objekt wird erstellt
paramsHash = xml_client.getArguments(argv) # Parameter werden uebergeben
xml_client.is_alive() # Ist die Schnittstelle erreichbar?
s = xmlrpc.client.ServerProxy('http://10.1.0.43:9001') # Erstellung des Server-Objekts
#xml_client.sendParams(xml_server, paramsHash) # Parameter werden gesendet
s.get_params(paramsHash)
except xmlrpc.client.Fault as fErr:
print ("XML-RPC Fehler:" )
print ("Fehlercode: %d" %fErr.faultCode )
print ("Fehlermeldung: %s" %fErr.faultString )
except xmlrpc.client.ProtocolError as pErr:
print ("XML-RPC Protokollfehler:" )
print ("Fehlercode: %d" %pErr.errcode )
print ("URL: %s" %(pErr.url) )
print ("HTTP-Header: %s" %pErr.headers )
print ("Fehlermeldung: %s" %pErr.errmsg )
except http.client.HTTPException as err:
print ("%s") %err
except:
# Es sind Fehler bei der Argumentuebergabe aufgetreten
print ("Es ist folgender Fehler aufgetreten: %s" %sys.exc_info()[0] )
if __name__ == "__main__":
# Start der Main-Funktion
main(sys.argv[1:])