当前位置: 首页 > news >正文

Postman和Python Request测试多行Form-data

        1、请求参数有多个,F12查看请求体如下:

   

    查看源代码:

------WebKitFormBoundaryHknGXm9VkhRUXZYC
Content-Disposition: form-data; name="custId"IICON004
------WebKitFormBoundaryHknGXm9VkhRUXZYC
Content-Disposition: form-data; name="custName"zljun8210@live.cn
------WebKitFormBoundaryHknGXm9VkhRUXZYC
Content-Disposition: form-data; name="workOrderId"396215
------WebKitFormBoundaryHknGXm9VkhRUXZYC
Content-Disposition: form-data; name="comment"Yes
------WebKitFormBoundaryHknGXm9VkhRUXZYC
Content-Disposition: form-data; name="file"undefined
------WebKitFormBoundaryHknGXm9VkhRUXZYC--

    原始请求上的Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryHOwJrytA0cCkCKXb

    

2、 在Postman上添加HTTP请求,配置如下:    
3、 Python代码处理如下:
import requests
import urllib3
from requests_toolbelt import MultipartEncoderdef customerReply(custid, woid, comments):url = 'https://xxx.xxx.xxx/xxxxxx/api/workorder/addcomment'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}data = MultipartEncoder({'custId': '%s' % custid,'custName': 'AutoReplyer','workOrderId': '%s' % woid,'comment': '%s' % comments})headers['Content-Type'] = data.content_typeurllib3.disable_warnings()resut = requests.post(url=url, headers=headers, data=data, verify=False)if resut.status_code == 200:# sys.stderr.write('customer replied !')return Trueelse:return Falseif __name__ == '__main__':customerReply('IICON004', 396215, 'customer reply test.')

    注意:与普通的接口测试有区别的是,headers里面的Content-Type要取消,另外定义 data.content_type,请求后会自动处理。

    如果还是用以下这种header,Post请求后会报405错误。    

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36','Content-Type': 'text/plain;charset=UTF-8'}

以上。

相关文章:

  • Android 全局配置Gradle依赖及插件仓库
  • Transformer - Outputs(Shifted Right)
  • typdef:深入理解C语言中typdef关键词的用法
  • uniapp切换中英文
  • Linux下docker运行python
  • uniApp使用uview对vuex的二次封装实现全局变量
  • 【Spring Boot 源码学习】ConditionEvaluationReport 日志记录上下文初始化器
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • 【ZZULIOJ】1030: 判断直角三角形(Java)
  • easyexcel-获取文件资源和导入导出excel
  • Unity进阶之路(2)UI Toolkit
  • vue项目引入微信sdk: npm install weixin-js-sdk --save报错
  • v-text 和v-html
  • CSS属性排序的插件和包
  • redis之主从复制、哨兵模式
  • JS 中的深拷贝与浅拷贝
  • 「面试题」如何实现一个圣杯布局?
  • CSS相对定位
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Spring Boot MyBatis配置多种数据库
  • 前言-如何学习区块链
  • 使用API自动生成工具优化前端工作流
  • No resource identifier found for attribute,RxJava之zip操作符
  • Semaphore
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # C++之functional库用法整理
  • # Maven错误Error executing Maven
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (solr系列:一)使用tomcat部署solr服务
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转载)从 Java 代码到 Java 堆
  • .Net CF下精确的计时器
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net MySql
  • .net连接oracle数据库
  • @GlobalLock注解作用与原理解析
  • @JsonFormat与@DateTimeFormat注解的使用
  • [Android]使用Retrofit进行网络请求
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [C++]类和对象【上篇】
  • [caffe(二)]Python加载训练caffe模型并进行测试1
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [Hive] CTE 通用表达式 WITH关键字
  • [IDF]啥?
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [LeetCode]剑指 Offer 40. 最小的k个数
  • [Python进阶] 消息框、弹窗:pywin32
  • [Remoting FAQ]Loading a Remoting Host On IIS得到BadImageFormatException