[白月黑羽]关于仿写类postman功能软件题目的解答

原题:
在这里插入图片描述
答:
python文件如下

from PySide6.QtWidgets import QApplication, QMessageBox,QTableWidgetItem,QHeaderView,QWidget,QTableWidget
from PySide6.QtCore import QEvent,QObject
from PySide6.QtUiTools import QUiLoader
import time
import requestsuiLoader = QUiLoader()class TableWidgetFilter(QObject):def __init__(self, parent=None):super(TableWidgetFilter, self).__init__(parent)def eventFilter(self, watched, event):if event.type() == QEvent.MouseButtonRelease:idx = watched.parentWidget().indexAt(event.position().toPoint())if(idx.row() < 0):watched.parentWidget().setCurrentItem(None)return super(TableWidgetFilter, self).eventFilter( watched, event)# 用于打印请求消息, 参数为 PreparedRequest 对象
def pretty_print_request(req):if req.body == None:msgBody = ''else:msgBody = req.body# 打印请求消息,如果为空不拼接进去result = '\n----------- 发送请求 -----------'if req.method!= None and req.url!= None:result = result + '\n' + req.method + ' ' + req.url if req.headers != None and len(req.headers) > 0:result = result +  '\n' result = result + str('\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()))if msgBody!= '':result = result + str('\n' + msgBody)return result# 用于打印响应消息
def pretty_print_response(res) -> str:result = '\n----------- 得到响应 -----------'if res.status_code!= None:result = result + str('\nHTTP/1.1 '+ str(res.status_code))if res.headers!= None and len(res.headers) > 0:result = result + '\n' result = result + str('\n'.join('{}: {}'.format(k, v) for k, v in res.headers.items()))if res.text!= '':result = result + str('\n' + res.text)return resultclass MainWindow:def __init__(self):self.ui = uiLoader.load('.\\main.ui')self.ui.addBtn.clicked.connect(self.add_header)self.ui.removeBtn.clicked.connect(self.remove_header)self.ui.headersTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)# 创建事件过滤器实例self.event_filter = TableWidgetFilter(self.ui.headersTable)self.ui.headersTable.viewport().installEventFilter(self.event_filter)self.ui.clearBtn.clicked.connect(self.clear_result)self.ui.sendBtn.clicked.connect(self.send)def add_header(self):self.ui.headersTable.insertRow(self.ui.headersTable.rowCount())def remove_header(self):row = self.ui.headersTable.currentRow()if row >= 0:self.ui.headersTable.removeRow(row)self.ui.headersTable.setCurrentItem(None)def send(self):#获取多个数据源request_type = self.ui.requestBox.currentText()request_url = self.ui.urlEdit.text()request_headers = {}for i in range(self.ui.headersTable.rowCount()):if self.ui.headersTable.item(i, 0) == None or self.ui.headersTable.item(i, 1) == None:continuekey = self.ui.headersTable.item(i, 0).text()value = self.ui.headersTable.item(i, 1).text()request_headers[key] = valuerequest_body = self.ui.bodyEdit.toPlainText()try:req = requests.Request(request_type, request_url, headers=request_headers, data=request_body)      prepared = req.prepare()except requests.exceptions.RequestException as e:QMessageBox.warning(self.ui, "错误", "请求参数错误\n" + str(e))returnself.ui.resultText.appendPlainText(pretty_print_request(prepared))#发送包try:res = requests.Session().send(prepared)self.ui.resultText.appendPlainText(pretty_print_response(res))except requests.exceptions.RequestException as e:QMessageBox.warning(self.ui, "错误", "请求失败\n" + str(e))returndef clear_result(self):self.ui.resultText.clear()app = QApplication([])
mainWindow = MainWindow()
mainWindow.ui.show()
app.exec()

动态加载的main.ui文件

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>Form</class><widget class="QWidget" name="Form"><property name="geometry"><rect><x>0</x><y>0</y><width>534</width><height>519</height></rect></property><property name="windowTitle"><string>HTTP接口测试</string></property><layout class="QVBoxLayout" name="verticalLayout_3"><item><layout class="QVBoxLayout" name="verticalLayout_2"><item><layout class="QHBoxLayout" name="horizontalLayout"><item><widget class="QComboBox" name="requestBox"><item><property name="text"><string>GET</string></property></item><item><property name="text"><string>POST</string></property></item></widget></item><item><widget class="QLineEdit" name="urlEdit"/></item><item><widget class="QPushButton" name="sendBtn"><property name="text"><string>发送</string></property></widget></item></layout></item><item><widget class="Line" name="line"><property name="orientation"><enum>Qt::Horizontal</enum></property></widget></item><item><widget class="QSplitter" name="splitter_3"><property name="orientation"><enum>Qt::Horizontal</enum></property><widget class="QSplitter" name="splitter_2"><property name="orientation"><enum>Qt::Vertical</enum></property><widget class="QSplitter" name="splitter"><property name="orientation"><enum>Qt::Horizontal</enum></property><widget class="QLabel" name="label"><property name="font"><font><pointsize>12</pointsize></font></property><property name="layoutDirection"><enum>Qt::LeftToRight</enum></property><property name="text"><string>消息头</string></property><property name="alignment"><set>Qt::AlignCenter</set></property></widget><widget class="QPushButton" name="addBtn"><property name="sizePolicy"><sizepolicy hsizetype="Fixed" vsizetype="Fixed"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>50</width><height>16777215</height></size></property><property name="text"><string>+</string></property></widget><widget class="QPushButton" name="removeBtn"><property name="sizePolicy"><sizepolicy hsizetype="Fixed" vsizetype="Fixed"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>50</width><height>16777215</height></size></property><property name="text"><string>-</string></property></widget></widget><widget class="QTableWidget" name="headersTable"><column><property name="text"><string>名称</string></property></column><column><property name="text"><string></string></property></column></widget></widget><widget class="Line" name="line_2"><property name="minimumSize"><size><width>15</width><height>0</height></size></property><property name="orientation"><enum>Qt::Vertical</enum></property></widget><widget class="QWidget" name="layoutWidget_2"><layout class="QVBoxLayout" name="verticalLayout"><item><widget class="QLabel" name="label_2"><property name="font"><font><pointsize>12</pointsize></font></property><property name="text"><string>消息体</string></property><property name="alignment"><set>Qt::AlignCenter</set></property></widget></item><item><widget class="QPlainTextEdit" name="bodyEdit"><property name="enabled"><bool>true</bool></property></widget></item></layout></widget></widget></item><item><widget class="Line" name="line_3"><property name="orientation"><enum>Qt::Horizontal</enum></property></widget></item><item><widget class="QPlainTextEdit" name="resultText"><property name="readOnly"><bool>true</bool></property></widget></item><item alignment="Qt::AlignHCenter"><widget class="QPushButton" name="clearBtn"><property name="maximumSize"><size><width>75</width><height>16777215</height></size></property><property name="text"><string>清除</string></property></widget></item></layout></item></layout></widget><resources/><connections/>
</ui>

使用效果:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/471929.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postman接口测试(断言、关联、参数化、输出测试报告)

基本界面展示 Get、Post请求 Postman断言 使用postman来判断预期结果与实际结果是否一致 响应状态码断言 响应包含字符串 断言判断字符串的格式 关联 用于解决http请求之间存在依赖关系 依赖&#xff1a;一个http请求的响应结果中的数据&#xff0c;被另一个请求使用 登…

【卡尔曼滤波】数据融合Fusion的应用 C语言、Python实现(Kalman Filter)

【卡尔曼滤波】数据融合Fusion的应用 C语言、Python实现&#xff08;Kalman Filter&#xff09; 更新以gitee为准&#xff1a; gitee地址 文章目录 卡尔曼滤波数据融合Python实现C语言实现多个数据如何融合附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Pac…

网络原理-网络层和数据链路层

一、网络层 1、IP协议完成的工作 地址管理&#xff1a;使用一套地址体系来描述所没备的位置 路由选择&#xff1a;一个数据包如何从网络的某个地址传到另一个地址 2、IP报头 4 位版本号&#xff1a;取值为4或6 (IPv4/IPv6) 4 位首部长度&#xff1a;IP报头&#xff0c;单位…

【Three.js基础学习】22.New project structure

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 这里将使用全新的项目结构&#xff0c;将不同工具分层&#xff0c;区分开使用。 一、结构目录 二、对应文件 1.script.js 获取画布&#xff0c;引入样式和功能。 /* 课…

AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码

当前&#xff0c;5G技术已经成为推动数字经济和实体经济深度融合的关键驱动力&#xff0c;进入5G发展的下半场&#xff0c;5G与AI的融合正推动诸多行业的数字化转型和创新发展&#xff0c;终端侧AI和端云混合式AI将广泛应用于各类消费终端和各行各业。 在推动5G和AI与各行业场…

【WPF】Prism学习(二)

Prism Commands 1.命令&#xff08;Commanding&#xff09; 1.1. ViewModel的作用&#xff1a; ViewModel不仅提供在视图中显示或编辑的数据&#xff0c;还可能定义一个或多个用户可以执行的动作或操作。这些用户可以通过用户界面&#xff08;UI&#xff09;执行的动作或操作…

智慧建造-运用Trimble技术将梦幻水族馆变为现实【上海沪敖3D】

项目概述 西雅图水族馆耗资1.6亿美元对海洋馆进行扩建。该项目包括建造三个大型栖息地&#xff0c;每个建筑物几乎都没有直边&#xff0c;其中一个主栖息地由520立方米混凝土和355吨钢筋组成。特纳建筑公司的混凝土团队通过强大的贸易合作伙伴和创新的数字制造技术&#xff0c;…

kubesphere环境-本地Harbor仓库+k8s集群(单master 多master)+Prometheus监控平台部署

前言&#xff1a;半月前在公司生产环境上离线部署了k8s集群Victoria Metrics(二开版)自研版夜莺 监控平台的搭建&#xff0c;下面我租用3台华为云服务器演示部署kubesphere环境-本地Harbor仓库k8s集群&#xff08;单master节点 & 单master节点&#xff09;Prometheus监控部…

java 随机生成验证码

1.需求 实现随机生成验证码&#xff0c;验证码可能是大小写字母和数字 2.实现 写一个getCode方法实现 public static String getCode(int n){//1. 定义一个字符串&#xff0c;字符串中包含大小写字母和数字String str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs…

Unity图形学之Blend指令

1.渲染流程&#xff1a;Blend 决定了要渲染的像素和Gbuffer里像素到底怎么取舍 2.Blend 公式&#xff1a; 3.factor可以取值的内容有&#xff1a; One 1 Zero :0 SrcColor : 要渲染的像素 SrcAlpha : 要渲染像素的 a 通道。 DstColor &#xff1a; 已经渲染在gbuffer…

林曦词典|养生

“林曦词典”是在水墨画家林曦的课堂与访谈里&#xff0c;频频邂逅的话语&#xff0c;总能生发出无尽的思考。那些悠然轻快的、微妙纷繁的&#xff0c;亦或耳熟能详的词&#xff0c;经由林曦老师的独到解析&#xff0c;意蕴无穷&#xff0c;让人受益。于是&#xff0c;我们将诸…

生成自签名证书并配置 HTTPS 使用自签名证书

生成自签名证书 1. 运行 OpenSSL 命令生成证书和私钥 在终端中输入以下命令&#xff0c;生成自签名证书和私钥文件&#xff1a; sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout self_signed.key -out self_signed.pem-x509&#xff1a;生成自签名证书。…

物料数据对接:轻易云助力聚水潭与金蝶云星空集成方案

聚水潭数据集成到金蝶云星空&#xff1a;物料对接方案 在企业信息化系统中&#xff0c;数据的高效流动和准确对接是业务运营的关键。本文将聚焦于一个具体的技术案例——如何通过轻易云数据集成平台实现聚水潭与金蝶云星空之间的物料数据对接。 本次集成任务主要涉及两个核心…

阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_作战无人机和察打无人机图鉴

文献基本信息 题名作者来源发表时间2020年国外先进军用无人机技术发展综述 袁成;董晓琳;朱超磊 飞航导弹 2021-01-14 2021年国外军用无人机装备技术发展综述 朱超磊 ;袁成;杨佳会;飞航导弹 战术导弹技术2022-02-112022年国外军用无人机装备技术发展综述 朱超磊;金钰;王靖…

【C#设计模式(11)——外观模式(Facade Pattern)】

前言 外观模式隐藏了子系统的复杂性&#xff0c;简化了客户端与子系统之间的交互。 代码 public class Facade{private CommunicationModel communicationModel;private AcquisitionModel acquisitionModel;private ToolModel toolModel;public Facade(){communicationModel n…

学习日记_20241115_聚类方法(层次聚类)

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…

力扣 LeetCode 239. 滑动窗口最大值(Day5:栈与队列)

解题思路&#xff1a; 始终维护deque的头元素为最大值&#xff0c;后面来的值更大就会逐一清除前面比它小的值 可以把 peek() 改为 peekFirst() &#xff0c;虽然是一个意思&#xff0c;但看起来更加清楚&#xff0c;对于双端队列能更清晰地表述具体操作 class Solution {pu…

基于GPU器件行为的创新分布式功能安全机制为智能驾驶保驾护航

作者&#xff1a;商瑞 陈娇 随着汽车智能化程度的快速提高&#xff0c;大量新的处理器和系统级芯片&#xff08;SoC&#xff09;被广泛引入到车辆中&#xff0c;无论是在驾驶还是座舱等场景&#xff0c;无论采用域控制器模式还是新兴的中央控制单元模式&#xff0c;都无一例外…

高美GULMAY高压发生器维修X射线源维修CF160

GULMAY高压发生器维修规格系列包括&#xff1a;CF,FC,CP等系列 维修类别&#xff1a;仪器仪表/无损检测仪器/其他无损检测仪器 GULMAY公司作为世界上X的工业X射线高压系统制造厂家之一,GULMAY公司拥有30多年的研发和制造经验,不但为XX射线探伤X域的用户提供种类繁多的标准型号…