@@ -163,7 +163,7 @@ def __init__(self, allow_none, encoding):
163
163
self .funcs = {}
164
164
self .instance = None
165
165
self .allow_none = allow_none
166
- self .encoding = encoding
166
+ self .encoding = encoding or 'utf-8'
167
167
168
168
def register_instance (self , instance , allow_dotted_names = False ):
169
169
"""Registers an instance to respond to XML-RPC requests.
@@ -266,7 +266,7 @@ def _marshaled_dispatch(self, data, dispatch_method = None):
266
266
encoding = self .encoding , allow_none = self .allow_none ,
267
267
)
268
268
269
- return response
269
+ return response . encode ( self . encoding )
270
270
271
271
def system_listMethods (self ):
272
272
"""system.listMethods() => ['add', 'subtract', 'multiple']
@@ -473,8 +473,6 @@ def do_POST(self):
473
473
474
474
self .end_headers ()
475
475
else :
476
- # Got a valid XML RPC response; convert to bytes first
477
- response = response .encode ("utf-8" )
478
476
self .send_response (200 )
479
477
self .send_header ("Content-type" , "text/xml" )
480
478
self .send_header ("Content-length" , str (len (response )))
@@ -551,7 +549,9 @@ def handle_xmlrpc(self, request_text):
551
549
print ('Content-Type: text/xml' )
552
550
print ('Content-Length: %d' % len (response ))
553
551
print ()
554
- sys .stdout .write (response )
552
+ sys .stdout .flush ()
553
+ sys .stdout .buffer .write (response )
554
+ sys .stdout .buffer .flush ()
555
555
556
556
def handle_get (self ):
557
557
"""Handle a single HTTP GET request.
@@ -569,11 +569,14 @@ def handle_get(self):
569
569
'message' : message ,
570
570
'explain' : explain
571
571
}
572
+ response = response .encode ('utf-8' )
572
573
print ('Status: %d %s' % (code , message ))
573
- print ('Content-Type: text/html' )
574
+ print ('Content-Type: %s' % http . server . DEFAULT_ERROR_CONTENT_TYPE )
574
575
print ('Content-Length: %d' % len (response ))
575
576
print ()
576
- sys .stdout .write (response )
577
+ sys .stdout .flush ()
578
+ sys .stdout .buffer .write (response )
579
+ sys .stdout .buffer .flush ()
577
580
578
581
def handle_request (self , request_text = None ):
579
582
"""Handle a single XML-RPC request passed through a CGI post method.
@@ -814,12 +817,12 @@ def do_GET(self):
814
817
self .report_404 ()
815
818
return
816
819
817
- response = self .server .generate_html_documentation ()
820
+ response = self .server .generate_html_documentation (). encode ( 'utf-8' )
818
821
self .send_response (200 )
819
822
self .send_header ("Content-type" , "text/html" )
820
823
self .send_header ("Content-length" , str (len (response )))
821
824
self .end_headers ()
822
- self .wfile .write (response . encode () )
825
+ self .wfile .write (response )
823
826
824
827
# shut down the connection
825
828
self .wfile .flush ()
@@ -852,12 +855,14 @@ def handle_get(self):
852
855
documentation.
853
856
"""
854
857
855
- response = self .generate_html_documentation ()
858
+ response = self .generate_html_documentation (). encode ( 'utf-8' )
856
859
857
860
print ('Content-Type: text/html' )
858
861
print ('Content-Length: %d' % len (response ))
859
862
print ()
860
- sys .stdout .write (response )
863
+ sys .stdout .flush ()
864
+ sys .stdout .buffer .write (response )
865
+ sys .stdout .buffer .flush ()
861
866
862
867
def __init__ (self ):
863
868
CGIXMLRPCRequestHandler .__init__ (self )
0 commit comments