介绍HTTP协议规定post提交的数据必须放在消息体中,但是协议并没有规定必须使用什么编码方式。服务器根据请求头中的Content-Type字段了解请求中的消息体是如何编码的,然后解析消息体。具体的编码方式包括:application/x-www-form-urlencoded最常见的post数据提交方式是以form形式提交数据。application/json以json字符串形式提交数据。multipart/form-data一般用于上传文件。1、以表单形式发送post请求Reqeusts支持以表单形式发送post请求。你只需要用request的参数构造一个字典,然后传递给requests.post()的data参数即可。示例:#-*-编码:utf-8-*-#author:Garyimportrequestsurl='http://httpbin.org/post'#测试站点的urldata={'key1':'value1','key2':'value2'}#你发送给这个的数据r=requests.post(url,data=data)#使用requests的post方法,data接受你要发送的数据print(r.text)#查看返回的内容输出外汇MT4教程https://www.kaifx.cn/mt4.html{"args":{},"data":"","files":{},#你提交的表单数据"form":{"key1":"value1","key2":"value2"},"headers":{..."Content-Type":"application/x-www-form-urlencoded",...},"json":null,...}可以看到请求头中的Content-Type字段已经设置为application/x-www-form-urlencoded,data={'key1':'value1','key2':'value2'}和form表单提交给服务器,服务器返回的表单字段就是提交的数据。2.发送json形式的post请求,可以给requests.post()的data参数传一个json字符串,#-*-coding:utf-8-*-#author:Garyimportrequestsimportjsonurl='http://httpbin.org/post'#一个测试网站的urljson_data=json.dumps({'key1':'value1','key2':'value2'})#你发给这个的数据,数据格式转换成jsonr=requests.post(url,data=json_data)#使用requests的post方法,data接受你要发送的数据print(r.text)#查看返回的内容output:{"args":{},"data":"{\"key2\":\"value2\",\"key1\":\"value1\"}","files":{},"form":{},"headers":{..."Content-Type":"application/json",...},"json":{"key1":"value1","key2":"value2"},...}可以看到Content-请求头的类型设置为application/json,并向服务器提交json字符串json_data。3、以multipart形式发送post请求(上传文件)Requests也支持以multipart形式发送post请求,只需要将一个文件传递给requests.post()的files参数即可。#-*-编码:utf-8-*-#author:Garyimportrequestsurl='http://httpbin.org/post'files={'file':open('report.txt','rb')}#上传目录下必须有report.txt文件。rb表示以只读方式打开二进制格式的文件。r=requests.post(url,files=files)#通过files参数指定要发送的文件内容print(r.text)output:{"args":{},"data":"",“文件”:{“文件”:“你好世界!”},"form":{},"headers":{..."Content-Type":"multipart/form-data;boundary=467e443f4c3d403c8559e2ebd009bf4a",...},"json":null,...}文本文件report.txt的内容只有一行:Helloworld!从请求的响应结果可以看出数据已经上传到服务器。
