鱼C论坛

 找回密码
 立即注册
查看: 3045|回复: 10

[已解决]python_requests发送form-data请求

[复制链接]
发表于 2022-12-2 17:33:14 | 显示全部楼层 |阅读模式
30鱼币
如图的这个请求传的form-data格式,有大佬教我怎么写吗
最佳答案
2022-12-2 17:33:15
本帖最后由 阿奇_o 于 2022-12-2 19:44 编辑

form-data 一般是用来 传文件的!  所以对应的 Content-Type 也要写合适的文件类型(接口要求什么就是什么)。
具体例子,比如要上传一张图片文件,用requests库,就是像这样写:
request.request('POST', url,  files={'media': open('my_image.png', 'rb')}, headers=...., cookies=...)  
# 所以,在Postman里,如果你要用 form-data 形式上传数据,也有点击select某个文件作为value,才行。键的名字 则需要根据接口要求填,什么是就是什么。
 
其中请求头headers里的 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAAsyMsKEKyIN259z   (类似这样的)

# 注意看 这里 就是要 form-data  (当然这只是你客户端告诉服务端 "我是这样的内容类型",具体是否符合,还要看它后端怎么处理)

ps: requests.request() 的 POST传参,如果 指定 data 参数 则对应的 Content-Type 是 application/x-www-form-urlencoded; ....


微信图片_20221202173220.jpg

最佳答案

查看完整内容

form-data 一般是用来 传文件的! 所以对应的 Content-Type 也要写合适的文件类型(接口要求什么就是什么)。 具体例子,比如要上传一张图片文件,用requests库,就是像这样写: 其中请求头headers里的 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAAsyMsKEKyIN259z (类似这样的) # 注意看 这里 就是要 form-data (当然这只是你客户端告诉服务端 "我是这样的内容类型",具体是否符合,还要看 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-2 17:33:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 阿奇_o 于 2022-12-2 19:44 编辑

form-data 一般是用来 传文件的!  所以对应的 Content-Type 也要写合适的文件类型(接口要求什么就是什么)。
具体例子,比如要上传一张图片文件,用requests库,就是像这样写:
request.request('POST', url,  files={'media': open('my_image.png', 'rb')}, headers=...., cookies=...)  
# 所以,在Postman里,如果你要用 form-data 形式上传数据,也有点击select某个文件作为value,才行。键的名字 则需要根据接口要求填,什么是就是什么。
 
其中请求头headers里的 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAAsyMsKEKyIN259z   (类似这样的)

# 注意看 这里 就是要 form-data  (当然这只是你客户端告诉服务端 "我是这样的内容类型",具体是否符合,还要看它后端怎么处理)

ps: requests.request() 的 POST传参,如果 指定 data 参数 则对应的 Content-Type 是 application/x-www-form-urlencoded; ....


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-2 17:37:43 | 显示全部楼层
本帖最后由 suchocolate 于 2022-12-2 19:10 编辑
import requests

headers={'User-Agent': 'Mozilla/5.0', 'Content-Type': 'multipart/form-data'}

data={
    'username': 'admin',
    'password': '123456'
}

r=requests.post('your url', data=data, headers=headers)
print(r.status_code)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-2 17:38:49 | 显示全部楼层
百度一下不是直接有教程嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-2 17:56:49 | 显示全部楼层

form-data格式直接data去传我试过不行呀。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-2 18:42:58 | 显示全部楼层
gengbo89 发表于 2022-12-2 17:56
form-data格式直接data去传我试过不行呀。。。


啥网站,发出来看看,指定content-type没
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-2 19:11:26 | 显示全部楼层
gengbo89 发表于 2022-12-2 17:56
form-data格式直接data去传我试过不行呀。。。

已改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-2 19:41:13 | 显示全部楼层
url = "http://{}/password".format(qz_host)
    headers = {}
    data = {
        "username": (None,qz_user),
        "password": (None,qz_pass)
    }
    r = requests.post(url, files=data, headers=headers)

我最后是这样传的,是可以成功的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-2 19:51:27 | 显示全部楼层
gengbo89 发表于 2022-12-2 19:41
url = "http://{}/password".format(qz_host)
    headers = {}
    data = {

成功个啥,你都不理解。。 要是只是要个username和password,一般是指定 data={...} ,而不是 files={...}
但为什么它们都可以呢? 因为它们都会作为 请求体的内容 post过去。。
所以只要你headers没问题,鉴权cookie等也没问题,肯定能正常成功POST过去。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-2 23:03:18 | 显示全部楼层
本帖最后由 gengbo89 于 2022-12-2 23:12 编辑
阿奇_o 发表于 2022-12-2 19:51
成功个啥,你都不理解。。 要是只是要个username和password,一般是指定 data={...} ,而不是 files={... ...


大哥,你是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-4 11:17:53 | 显示全部楼层

感谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表