1

我构建了一个简单的服务器:

s = socket(AF_INET, SOCK_STREAM)
s.bind(('127.0.0.1',8282))
s.listen(1)
client, info = s.accept()

request = ""
i = 0

while True:
    c = client.recv(1)
    request += c
    if c in ["\r","\n"]:
        i += 1
    else:
        i = 0
    if i == 4:
        break

print "============="
print "Client Request"
print "============="
print request

raw_input('Press Enter to send response')

data = """<html>
<body>
<h1>My Amazing Website !!!</h1>
<br>
<font color='yellow' size='20'>Hello (Name)</font>
</body>
</html>
"""

response = "HTTP/1.1 200 OK\r\n"
response += "Content-Length: %d\r\n"%len(data)
response += "Connection: Close\r\n"
response += "Content-Type: text/html\r\n\r\n"
response += data

client.send(response)
time.sleep(2)
client.close()

现在我不明白如何用来自 url 的 get 替换我的 html 代码中的“(名称)”。假设我的网址是:127.0.0.1:8282/?name=Someone。我怎样才能得到可以在这里找到的名字“GET / * HTTP/1.1?”

4

1 回答 1

0

Python 提供了urlparse一个模块,其中包含从 url 获取信息的实用程序!

>>> from urlparse import urlparse, parse_qs
>>> parse_qs(urlparse('/test?testing=test&greeting=smile').query)
{'testing': ['test'], 'greeting': ['smile']}

我认为这里的棘手部分是从标头中获取GET 请求路径

python 提供了更高级别的方法来构建网络服务器。https://wiki.python.org/moin/BaseHttpServer,以及一些优秀的全栈网络框架

于 2013-10-31T22:02:31.090 回答