2

有人能告诉我这个简单的服务器设置出了什么问题吗?它基于与这个问题相同的代码并且可能是类似的问题 - 但我需要一个 POST 请求而不是另一个问题的最终解决方案 GET?问题是self.args当我预期的时候是空的{'verify': 'true'}

这是我的 POST 请求:

import requests

url = 'http://localhost:8080/'
data = {'verify': 'true'}
response = requests.post(url, params=data)

print response.text

以及在 localhost 上运行的处理程序:

class MyHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        self.query_string = self.rfile.read(int(self.headers['Content-Length']))
        self.args = dict(cgi.parse_qsl(self.query_string))
        self.send_response(200)
        self.end_headers()
        self.wfile.write("Content-type: text/html<BR><BR>");
        self.wfile.write("<HTML>POST OK.<BR><BR>");

def main():
    server = HTTPServer(('', 8080), MyHandler)
    server.serve_forever()

if __name__ == '__main__':
    main()

处理程序正在输出Jamie-PC - - [15/Jul/2013 12:40:34] "POST /?verify=true HTTP/1.1" 200 -以防万一。

4

1 回答 1

1

您可能需要的是使用data而不是params如下:

import requests

url = 'http://localhost:8080/'
data = {'verify': 'true'}
response = requests.post(url, data=data)

print response.text

这将设置所有其他必要的标头,例如内容长度。

于 2013-07-18T15:49:12.110 回答