parameters: (self)
docstring: Handles the HTTP POST request.
  
          Attempts to interpret all HTTP POST requests as XML-RPC calls,
          which are forwarded to the server's _dispatch method for handling.
docstring_summary: Handles the HTTP POST request.
docstring_tokens: Handles the HTTP POST request .
function: def do_POST(self):
          """Handles the HTTP POST request.
  
          Attempts to interpret all HTTP POST requests as XML-RPC calls,
          which are forwarded to the server's _dispatch method for handling.
          """
  
          # Check that the path is legal
          if not self.is_rpc_path_valid():
              self.report_404()
              return
  
          try:
              # Get arguments by reading body of request.
              # We read this in chunks to avoid straining
              # socket.read(); around the 10 or 15Mb mark, some platforms
              # begin to have problems (bug #792570).
              max_chunk_size = 10*1024*1024
              size_remaining = int(self.headers["content-length"])
              L = []
              while size_remaining:
                  chunk_size = min(size_remaining, max_chunk_size)
                  chunk = self.rfile.read(chunk_size)
                  if not chunk:
                      break
                  L.append(chunk)
                  size_remaining -= len(L[-1])
              data = b''.join(L)
  
              data = self.decode_request_content(data)
              if data is None:
                  return #response has been sent
  
              # In previous versions of SimpleXMLRPCServer, _dispatch
              # could be overridden in this class, instead of in
              # SimpleXMLRPCDispatcher. To maintain backwards compatibility,
              # check to see if a subclass implements _dispatch and dispatch
              # using that method if present.
              response = self.server._marshaled_dispatch(
                      data, getattr(self, '_dispatch', None), self.path
                  )
          except Exception as e: # This should only happen if the module is buggy
              # internal error, report as HTTP server error
              self.send_response(500)
  
              # Send information about the exception if requested
              if hasattr(self.server, '_send_traceback_header') and \
                      self.server._send_traceback_header:
                  self.send_header("X-exception", str(e))
                  trace = traceback.format_exc()
                  trace = str(trace.encode('ASCII', 'backslashreplace'), 'ASCII')
                  self.send_header("X-traceback", trace)
  
              self.send_header("Content-length", "0")
              self.end_headers()
          else:
              self.send_response(200)
              self.send_header("Content-type", "text/xml")
              if self.encode_threshold is not None:
                  if len(response) > self.encode_threshold:
                      q = self.accept_encodings().get("gzip", 0)
                      if q:
                          try:
                              response = gzip_encode(response)
                              self.send_header("Content-Encoding", "gzip")
                          except NotImplementedError:
                              pass
              self.send_header("Content-length", str(len(response)))
              self.end_headers()
              self.wfile.write(response)
function_tokens: def do_POST ( self ) : # Check that the path is legal if not self . is_rpc_path_valid ( ) : self . report_404 ( ) return try : # Get arguments by reading body of request. # We read this in chunks to avoid straining # socket.read(); around the 10 or 15Mb mark, some platforms # begin to have problems (bug #792570). max_chunk_size = 10 * 1024 * 1024 size_remaining = int ( self . headers [ "content-length" ] ) L = [ ] while size_remaining : chunk_size = min ( size_remaining , max_chunk_size ) chunk = self . rfile . read ( chunk_size ) if not chunk : break L . append ( chunk ) size_remaining -= len ( L [ - 1 ] ) data = b'' . join ( L ) data = self . decode_request_content ( data ) if data is None : return #response has been sent # In previous versions of SimpleXMLRPCServer, _dispatch # could be overridden in this class, instead of in # SimpleXMLRPCDispatcher. To maintain backwards compatibility, # check to see if a subclass implements _dispatch and dispatch # using that method if present. response = self . server . _marshaled_dispatch ( data , getattr ( self , '_dispatch' , None ) , self . path ) except Exception as e : # This should only happen if the module is buggy # internal error, report as HTTP server error self . send_response ( 500 ) # Send information about the exception if requested if hasattr ( self . server , '_send_traceback_header' ) and self . server . _send_traceback_header : self . send_header ( "X-exception" , str ( e ) ) trace = traceback . format_exc ( ) trace = str ( trace . encode ( 'ASCII' , 'backslashreplace' ) , 'ASCII' ) self . send_header ( "X-traceback" , trace ) self . send_header ( "Content-length" , "0" ) self . end_headers ( ) else : self . send_response ( 200 ) self . send_header ( "Content-type" , "text/xml" ) if self . encode_threshold is not None : if len ( response ) > self . encode_threshold : q = self . accept_encodings ( ) . get ( "gzip" , 0 ) if q : try : response = gzip_encode ( response ) self . send_header ( "Content-Encoding" , "gzip" ) except NotImplementedError : pass self . send_header ( "Content-length" , str ( len ( response ) ) ) self . end_headers ( ) self . wfile . write ( response )