मुझे पाइथन के साथ कमांड लाइन के माध्यम से एक साधारण सर्वर चलाने के लिए this site पर एक स्क्रिप्ट मिली।मैं पायथन के बेसएचटीटीपीएस सर्वर/SimpleHTTPServer के साथ POST अनुरोधों को कैसे डिबग कर सकता हूं?
मैंने कुछ print
लाइनों को जोड़ा क्योंकि मैं अनुरोध के लिए कमांड लाइन के माध्यम से जीईटी और पोस्ट पैरामीटर प्रिंट करना चाहता हूं, लेकिन मुझे उन्हें कहीं भी दिखाने के लिए प्रतीत नहीं होता है।
मैं सिर्फ हमारे हमारे s
चर (pprint (vars(s))
) मुद्रित अगर मैं अंत यह देख:
{'client_address': ('127.0.0.1', 53373),
'close_connection': 1,
'command': 'GET',
'connection': <socket._socketobject object at 0x10b6560c0>,
'headers': <mimetools.Message instance at 0x10b689ab8>,
'path': '/favicon.ico',
'raw_requestline': 'GET /favicon.ico HTTP/1.1\r\n',
'request': <socket._socketobject object at 0x10b6560c0>,
'request_version': 'HTTP/1.1',
'requestline': 'GET /favicon.ico HTTP/1.1',
'rfile': <socket._fileobject object at 0x10b6538d0>,
'server': <BaseHTTPServer.HTTPServer instance at 0x10b6893f8>,
'wfile': <socket._fileobject object at 0x10b6536d0>}
मैं तो सूचकांकों में से प्रत्येक के साथ print
आदेश का उपयोग करने की कोशिश की, (pprint (vars(s.connection))
) लेकिन वह काम नहीं कर रहा ।
यहाँ संशोधित स्क्रिप्ट है:
#!/usr/bin/python
import time
import BaseHTTPServer
from pprint import pprint
HOST_NAME = 'localhost' # !!!REMEMBER TO CHANGE THIS!!!
PORT_NUMBER = 9000 # Maybe set this to 9000.
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_HEAD(s):
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
def do_GET(s):
"""Respond to a GET request."""
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
s.wfile.write("<html><head><title>Title goes here.</title></head>")
s.wfile.write("<body><form action='.' method='POST'><input name='x' value='1' /><input type='submit' /></form><p>This is a test.</p>")
# If someone went to "http://something.somewhere.net/foo/bar/",
# then s.path equals "/foo/bar/".
s.wfile.write("<p>GET: You accessed path: %s</p>" % s.path)
s.wfile.write("</body></html>")
pprint (vars(s))
def do_POST(s):
"""Respond to a POST request."""
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
s.wfile.write("<html><head><title>Title goes here.</title></head>")
s.wfile.write("<body><p>This is a test.</p>")
s.wfile.write("<body><form action='.' method='POST'><input type='text' name='xxxxxxxxxxxx' value='0000000000000000000000' /><input type='submit' /></form><p>This is a test.</p>")
# If someone went to "http://something.somewhere.net/foo/bar/",
# then s.path equals "/foo/bar/".
s.wfile.write("<p>POST: You accessed path: %s</p>" % s.path)
s.wfile.write("</body></html>")
pprint (vars(s))
pprint (vars(s.connection))
pprint (vars(s.headers))
pprint (vars(s.request))
pprint (vars(s.rfile))
pprint (vars(s.server))
pprint (vars(s.wfile))
pprint (vars(s.fp))
"""pprint (vars(s.request))"""
if __name__ == '__main__':
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER)
मैं पोस्ट प्रिंट आउट और एक सरल स्क्रिप्ट का उपयोग कर मानकों को प्राप्त कर सकते हैं कैसे?
कमांड लाइन के माध्यम से वांछित उत्पादन कुछ ऐसा दिखाई देगा:
1.0.0.127. - - [03/Oct/2012 16:02:05] "POST/HTTP/1.1" 200 -
foo=1
bar=2
bis=3
यह किया जाना चाहिए था 'baz' नहीं' bis' :) –
@Piotr Dobrogost - बस ओपी के उदाहरण का पालन करना - यह तक का समय लग उसके साथ! :) –