python接口自动化(二十二) multipart/form-data表单提交

前言

multipart/form-data这种格式官方文档给的参考案例比较简单,实际情况中遇到会比较复杂,本篇讲解multipart/form-data的表单如何提交,非图片上传。

禅道提交bug

1.以禅道提交bug为参考案例,手动操作一次提交bug,抓包查看Content-Type:multipart/form-data

2.在webForms里面查看参数详情

参数填写

1.注意了,这里的参数对应为字典格式,字典的key对应WebForms里查看的name=“这里的参数”,value对应WebForms查看的value值。

bd={
    "product":"6",
    "module":"0",
    "project":"5",
    "openedBuild[]":"trunk",
    "assignedTo":"huyongqin",
    "type":"codeerror",
    "title":"测试8866",
    "severity":"1",
    "pri":"2",
    "steps":"<p>[步骤]打开浏览器;</p><br /><p>[结果]打不开</p><br /><p>[期望]可以打开</p><br />",
    "oldTaskID":"0",
    "uid":"5f2b6ce9192a9",
    "case":"0"

}

 参考代码

1.multipart/form-data这里传的是data参数。

2.请求头部不要加Content-Type:multipart/form-data这个参数,加了执行不会成功。

# coding:utf-8
import requests
import re
import hashlib
pw="P@ssw0rd"
s=requests.Session()
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"
}
vrand=0
while(True):
    rs1=s.get("http://localhost/zentaopms/www/user-login.html",headers=headers)
    rs1.encoding='utf-8'
    #print(rs1.text)
    rand=re.findall(r"'verifyRand' value='(.+?)'",rs1.text)
    #print(rand[0])
    if len(rand[0])==10:
        vrand=rand[0]
        break
print(vrand)
#方式一
hash=hashlib.md5()
hash.update(pw.encode('utf-8'))
f=hash.hexdigest()+vrand
#print(f)
#方式二
hash2=hashlib.md5(f.encode('utf-8'))
pwd=hash2.hexdigest()
print(pwd)
data={
"account":"admin",
"password":pwd,
"referer":"http://localhost/zentaopms/www/bug-browse-6.html",
"verifyRand":vrand
}
rs2=s.post("http://localhost/zentaopms/www/user-login.html",headers=headers,data=data)
rs2.encoding='utf-8'
#print(rs2.text)
rs3=s.get("http://localhost/zentaopms/www/bug-browse-6.html",headers=headers)
rs3.encoding='utf-8'
#print(rs3.text)
result=re.findall(r"\<a href=\'\/zentaopms\/www\/user-logout.html' \>(.+?)\<\/a\>",rs3.text)
print(result)
if result[0]=="退出":
    print("登录成功")

#提交bug
burl="http://localhost/zentaopms/www/bug-create-6-0-moduleID=0.html"
bd={
    "product":"6",
    "module":"0",
    "project":"5",
    "openedBuild[]":"trunk",
    "assignedTo":"huyongqin",
    "type":"codeerror",
    "title":"测试8866",
    "severity":"1",
    "pri":"2",
    "steps":"<p>[步骤]打开浏览器;</p><br /><p>[结果]打不开</p><br /><p>[期望]可以打开</p><br />",
    "oldTaskID":"0",
    "uid":"5f2b6ce9192a9",
    "case":"0"

}
rp=s.post(burl,data=bd)
rp.encoding="utf-8"
print(rp.text)  

 运行结果:

 查看禅道系统,发现有刚刚提交的bug。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提供了一种在Python3下使用requests库发送multipart/form-data类型请求的方法。这种类型的请求是用于上传文件或发送二进制数据的常见方式。通过使用requests库的post方法,将请求的URL和请求的参数以字典的形式传入即可发送multipart/form-data类型的请求。引用介绍了使用requests库发送application/x-www-form-urlencoded请求数据的方法。这种类型的请求常用于提交表单数据。通过使用requests库的post方法,将请求的URL和请求的参数以字典的形式传入即可发送application/x-www-form-urlencoded类型的请求。引用给出了一个示例函数client_post_mutipart_formdata_requests,该函数可以用于发送multipart/form-data类型的请求,并接收请求的URL和请求的参数作为参数。综上所述,要使用Python的requests库发送multipart/form-data类型的请求,可以使用post方法,并将请求的URL和请求的参数以字典的形式传入。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python使用requests发送multipart/form-data请求数据](https://blog.csdn.net/weixin_39638048/article/details/110763239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值