Skip to main content
 首页 » 编程设计

python之使用 Python 发送和解析 HTTP POST 请求

2025年05月04日8xxx_UU

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

这是我的 POST 请求:

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

以及在本地主机上运行的处理程序:

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 - 以防有帮助。

请您参考如下方法:

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

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

这会设置所有其他必要的 header ,例如内容长度。