-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhttp-simple_server.py
153 lines (126 loc) · 3.77 KB
/
http-simple_server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
"""
This file contains multiple examples divided by docsrings.
Uncomment the block of code you want to run before you run the code.
Warning, if you are unable to run server examples because of "the port is occupied error", use different port - 8001, 8002...
"""
"""
HTTP server - simple example
This is simple localy running server on http://127.0.0.1:8000 - this server is serving folder from where the script si running.
"""
# import http.server
# import socketserver
#
# PORT = 8000
# ADDRESS = "127.0.0.1"
#
# Handler = http.server.SimpleHTTPRequestHandler
# httpd = socketserver.TCPServer((ADDRESS, PORT), Handler)
#
# print("Serving at port", PORT)
# httpd.serve_forever()
"""
Server test:
You can test the server with following code (run it from different console while the server is up).
"""
# import requests
# r = requests.get("http://127.0.0.1:8000/")
# print(r.status_code)
# print(r.text)
"""
Server that returns web pages.
The next server example serve simple webpages.
"""
# import http.server
# import socketserver
#
# class MyRequestHandler(http.server.SimpleHTTPRequestHandler):
#
# def do_GET(self):
# """Respond to a GET request."""
# if self.path == "/":
# self.send_response(200)
# self.send_header("Content-type", "text/html")
# self.end_headers()
# message = "This is the main page."
# elif self.path in ["/help/", "/help"]:
# self.send_response(200)
# self.send_header("Content-type", "text/html")
# self.end_headers()
# message = "This is page with help."
# else:
# self.send_response(404)
# self.send_header("Content-type", "text/html")
# self.end_headers()
# message = "Page not found. See /help/ for help."
# # write message
# self.wfile.write(message.encode())
#
#
# PORT = 8001
# ADDRESS = "127.0.0.1"
#
# httpd = socketserver.TCPServer((ADDRESS, PORT), MyRequestHandler)
#
# print("Serving at port", PORT)
# httpd.serve_forever()
"""
Server example with POST handler
This server is able to handle POST request and process it.
"""
# import http.server
# import socketserver
# import cgi
#
# class MyRequestHandler(http.server.SimpleHTTPRequestHandler):
#
# def do_POST(self):
# # get params send as data
# form = cgi.FieldStorage(
# fp=self.rfile,
# headers=self.headers,
# environ={'REQUEST_METHOD':'POST',
# 'CONTENT_TYPE':self.headers['Content-Type'],
# })
# query_dict = {key: form.getvalue(key) for key in form.keys()}
# # prepare response
# self.send_response(200)
# self.send_header("Content-type", "text/html")
# self.end_headers()
# self.wfile.write(("Parameters sent:"+str(query_dict)).encode())
#
# def do_GET(self):
# """Respond to a GET request."""
# self.send_response(200)
# self.send_header("Content-type", "text/html")
# self.end_headers()
# html_form = """
# <form method="post" action="/">
# <input type="text" name="a" value="1"><br>
# <input type="text" name="b" value="2"><br>
# <input type="submit" value="Send">
# </form>
# """
# self.wfile.write(html_form.encode())
#
# PORT = 8002
# ADDRESS = "127.0.0.1"
#
# httpd = socketserver.TCPServer((ADDRESS, PORT), MyRequestHandler)
#
# print("Serving at port", PORT)
# httpd.serve_forever()
"""
POST test
This sample can be used to test the POST handling server (you need to keep the server running).
"""
# import requests
#
# parameters = {
# "a": 2,
# "b": 3,
# "c": 4,
# }
#
# r = requests.post("http://127.0.0.1:8000/", data=parameters)
#
# print(r.status_code, r.text)