中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

上海網(wǎng)站建設(shè)專業(yè)公司優(yōu)化關(guān)鍵詞排名seo

上海網(wǎng)站建設(shè)專業(yè)公司,優(yōu)化關(guān)鍵詞排名seo,小米網(wǎng)站seo分析報告+書,網(wǎng)站建設(shè)要注意哪些事情python實(shí)戰(zhàn)案例----使用 PyQt5 構(gòu)建簡單的 HTTP 接口測試工具 文章目錄 python實(shí)戰(zhàn)案例----使用 PyQt5 構(gòu)建簡單的 HTTP 接口測試工具項目背景技術(shù)棧用戶界面核心功能實(shí)現(xiàn)結(jié)果展示完整代碼總結(jié) 在現(xiàn)代軟件開發(fā)中,測試接口的有效性與響應(yīng)情況變得尤為重要。本文將指導(dǎo)…

python實(shí)戰(zhàn)案例----使用 PyQt5 構(gòu)建簡單的 HTTP 接口測試工具

文章目錄

  • python實(shí)戰(zhàn)案例----使用 PyQt5 構(gòu)建簡單的 HTTP 接口測試工具
  • 項目背景
  • 技術(shù)棧
  • 用戶界面
  • 核心功能實(shí)現(xiàn)
  • 結(jié)果展示
  • 完整代碼
  • 總結(jié)

在現(xiàn)代軟件開發(fā)中,測試接口的有效性與響應(yīng)情況變得尤為重要。本文將指導(dǎo)構(gòu)建一個簡單的 HTTP 接口測試工具,使用 Python 的 PyQt5 庫創(chuàng)建用戶界面,并通過 requests 庫發(fā)送 HTTP 請求。

項目背景

隨著互聯(lián)網(wǎng)的發(fā)展,各種 API(應(yīng)用程序編程接口)的使用日益廣泛。無論是在構(gòu)建前端和后端應(yīng)用,還是在進(jìn)行數(shù)據(jù)分析和集成時,測試 API 的能力都是基礎(chǔ)技能之一。我們將用 PyQt5 創(chuàng)建一個簡單的工具,允許用戶輸入請求 URL 和請求頭,并能夠選擇請求方式(GET 或 POST),以查看返回結(jié)果。

具體的效果可以看看這個視頻給你們的一個練習(xí)_嗶哩嗶哩_bilibili

技術(shù)棧

  • Python:作為主要編程語言。
  • PyQt5:用于創(chuàng)建圖形用戶界面。
  • Requests:用于發(fā)送 HTTP 請求。

用戶界面

我們將創(chuàng)建一個簡單的用戶界面,包含以下組件:

  1. URL 輸入框
  2. 請求方式下拉框(GET/POST)
  3. 請求頭設(shè)置表格(可以增加和刪除行)
  4. 發(fā)送請求的按鈕
  5. 顯示信息的區(qū)域(包括請求和響應(yīng)的詳細(xì)信息)

以下是 setupUi 方法的代碼,負(fù)責(zé)構(gòu)建用戶界面:

def setupUi(self, Form):Form.setObjectName("Form")Form.resize(900, 600)self.verticalLayout = QtWidgets.QVBoxLayout(Form)# 添加 ComboBox 選擇請求方式self.comboBox = QtWidgets.QComboBox(Form)self.comboBox.addItem("GET")self.comboBox.addItem("POST")# 添加 LineEdit 輸入 URLself.lineEdit = QtWidgets.QLineEdit(Form)self.lineEdit.setPlaceholderText("此處填寫url")# 按鈕用于發(fā)送請求self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setText("發(fā)送")# 請求頭展示的表格self.tableWidget = QtWidgets.QTableWidget(Form)self.tableWidget.setColumnCount(2)self.tableWidget.setHorizontalHeaderLabels(["名稱", "值"])# 信息框self.listWidget = QtWidgets.QListWidget(Form)# 組件布局self.verticalLayout.addWidget(self.comboBox)self.verticalLayout.addWidget(self.lineEdit)self.verticalLayout.addWidget(self.pushButton)self.verticalLayout.addWidget(self.tableWidget)self.verticalLayout.addWidget(self.listWidget)

核心功能實(shí)現(xiàn)

用戶點(diǎn)擊“發(fā)送”按鈕后,將會根據(jù)輸入的 URL 和請求頭發(fā)送請求。下列是處理請求的 send_clicked方法:

def send_clicked(self):input_url = self.ui.lineEdit.text()send_made = self.ui.comboBox.currentText()data_dict = {}row_count = self.ui.tableWidget.rowCount()for row in range(row_count):key = self.ui.tableWidget.item(row, 0).text()value = self.ui.tableWidget.item(row, 1).text()data_dict[key] = valuetry:if send_made == 'GET':rt = requests.get(url=input_url, headers=data_dict)else:rt = requests.post(url=input_url, headers=data_dict)except Exception as e:self.ui.listWidget.addItem('請求失敗: ' + str(e))returnself.ui.listWidget.addItem(f'狀態(tài)碼:{rt.status_code}')for key, value in rt.headers.items():self.ui.listWidget.addItem(f'{key}: {value}')

結(jié)果展示

在信息框中,會顯示請求的 URL、請求頭信息及其響應(yīng)狀態(tài)碼。這種實(shí)時反饋可以幫助開發(fā)者快速調(diào)試 API。

請?zhí)砑訄D片描述

如上圖所示,在只填寫url的情況下,發(fā)現(xiàn)狀態(tài)碼是412訪問失敗

請?zhí)砑訄D片描述

當(dāng)我們把useragent填充之后,就可以正常訪問網(wǎng)址了

完整代碼

import sys
import requests
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(900, 600)self.verticalLayout = QtWidgets.QVBoxLayout(Form)self.verticalLayout.setObjectName("verticalLayout")self.horizontalLayout = QtWidgets.QHBoxLayout()self.horizontalLayout.setObjectName("horizontalLayout")self.comboBox = QtWidgets.QComboBox(Form)self.comboBox.setObjectName("comboBox")self.comboBox.addItem("")self.comboBox.addItem("")self.horizontalLayout.addWidget(self.comboBox)self.lineEdit = QtWidgets.QLineEdit(Form)self.lineEdit.setObjectName("lineEdit")self.horizontalLayout.addWidget(self.lineEdit)self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setObjectName("pushButton")self.horizontalLayout.addWidget(self.pushButton)self.verticalLayout.addLayout(self.horizontalLayout)self.horizontalLayout_2 = QtWidgets.QHBoxLayout()self.horizontalLayout_2.setObjectName("horizontalLayout_2")self.label = QtWidgets.QLabel(Form)self.label.setObjectName("label")self.horizontalLayout_2.addWidget(self.label)spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)self.horizontalLayout_2.addItem(spacerItem)self.pushButton_2 = QtWidgets.QPushButton(Form)self.pushButton_2.setObjectName("pushButton_2")self.horizontalLayout_2.addWidget(self.pushButton_2)self.pushButton_3 = QtWidgets.QPushButton(Form)self.pushButton_3.setObjectName("pushButton_3")self.horizontalLayout_2.addWidget(self.pushButton_3)self.verticalLayout.addLayout(self.horizontalLayout_2)self.tableWidget = QtWidgets.QTableWidget(Form)self.tableWidget.setObjectName("tableWidget")self.tableWidget.setColumnCount(2)self.tableWidget.setRowCount(0)item = QtWidgets.QTableWidgetItem()self.tableWidget.setHorizontalHeaderItem(0, item)item = QtWidgets.QTableWidgetItem()self.tableWidget.setHorizontalHeaderItem(1, item)self.verticalLayout.addWidget(self.tableWidget)self.label_2 = QtWidgets.QLabel(Form)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.label_2.setFont(font)self.label_2.setObjectName("label_2")self.verticalLayout.addWidget(self.label_2)self.listWidget = QtWidgets.QListWidget(Form)self.listWidget.setObjectName("listWidget")self.verticalLayout.addWidget(self.listWidget)self.horizontalLayout_3 = QtWidgets.QHBoxLayout()self.horizontalLayout_3.setObjectName("horizontalLayout_3")spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)self.horizontalLayout_3.addItem(spacerItem1)self.pushButton_4 = QtWidgets.QPushButton(Form)font = QtGui.QFont()font.setBold(True)font.setWeight(75)self.pushButton_4.setFont(font)self.pushButton_4.setObjectName("pushButton_4")self.horizontalLayout_3.addWidget(self.pushButton_4)spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)self.horizontalLayout_3.addItem(spacerItem2)self.verticalLayout.addLayout(self.horizontalLayout_3)self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "HTTP接口測試"))self.comboBox.setItemText(0, _translate("Form", "GET"))self.comboBox.setItemText(1, _translate("Form", "POST"))self.lineEdit.setPlaceholderText(_translate("Form", "此處填寫url"))self.pushButton.setText(_translate("Form", "發(fā)送"))self.label.setText(_translate("Form", "請求頭headers"))self.pushButton_2.setText(_translate("Form", "+"))self.pushButton_3.setText(_translate("Form", "-"))item = self.tableWidget.horizontalHeaderItem(0)item.setText(_translate("Form", "名稱"))item = self.tableWidget.horizontalHeaderItem(1)item.setText(_translate("Form", "值"))self.label_2.setText(_translate("Form", "信息框"))self.pushButton_4.setText(_translate("Form", "清空"))# 綁定按鈕self.pushButton.clicked.connect(Form.send_clicked)self.pushButton_2.clicked.connect(Form.add_row)self.pushButton_3.clicked.connect(Form.move_row)self.tableWidget.cellClicked.connect(Form.table_clicked)self.pushButton_4.clicked.connect(Form.clean_panel)# 邏輯函數(shù)
class Mywindow(QWidget):def __init__(self):super().__init__()self.ui = Ui_Form() # 實(shí)例化ui界面self.ui.setupUi(self)self.clicked_row = 0 # 默認(rèn)用戶選擇的是第0行self.info_text = []def table_clicked(self,row):self.clicked_row = rowdef send_clicked(self):self.clean_panel()input_url = self.ui.lineEdit.text()send_made = self.ui.comboBox.currentText()# 展示信息在面板上self.ui.listWidget.addItem('--------發(fā)送請求---------')self.ui.listWidget.addItem(f'用戶要訪問的網(wǎng)址是:{input_url}')self.ui.listWidget.addItem(f'用戶訪問對網(wǎng)址的請求方式是:{send_made}')self.ui.listWidget.addItem('請求頭如下:')data_dict = {}# 獲取行數(shù)row_count = self.ui.tableWidget.rowCount()# 遍歷每一行for row in range(0,row_count):key = self.ui.tableWidget.item(row, 0).text()value = self.ui.tableWidget.item(row, 1).text()dict1={f'{key}':f'{value}'}self.ui.listWidget.addItem(str(dict1))data_dict = dict1|data_dicttry:if send_made=='GET':rt = requests.get(url=input_url,headers=data_dict)else:rt = requests.post(url=input_url,headers=data_dict)except:self.ui.listWidget.addItem('url出錯')rt = 404self.ui.listWidget.addItem('--------返回內(nèi)容---------')self.ui.listWidget.addItem(f'狀態(tài)碼:{rt}')if not rt == 404:for key,value in rt.headers.items():self.ui.listWidget.addItem(f'{key}  :  {value}')def add_row(self):self.ui.tableWidget.insertRow(self.ui.tableWidget.rowCount())def move_row(self):self.ui.tableWidget.removeRow(self.clicked_row)self.clicked_row = 0  # 把刪除行置零def clean_panel(self):print('點(diǎn)擊了清理')self.ui.listWidget.clear()self.info_text = []if __name__ == '__main__':app = QApplication(sys.argv)window = Mywindow()window.show()sys.exit(app.exec_())

完整的代碼已經(jīng)在前面展示。確保已經(jīng)安裝 PyQt5 和 requests 庫,可以通過以下命令安裝:

pip install PyQt5 requests

總結(jié)

本項目展示了如何用 PyQt5 來構(gòu)建 GUI 應(yīng)用程序,并通過 requests 庫發(fā)送 HTTP 請求。這不僅是學(xué)習(xí) PyQt5 的一個好方法,也為后續(xù)實(shí)現(xiàn)更復(fù)雜的 API 測試工具奠定了基礎(chǔ)。

http://www.risenshineclean.com/news/6899.html

相關(guān)文章:

  • 搭建公司內(nèi)部網(wǎng)站搜索引擎seo如何賺錢
  • 專業(yè)網(wǎng)站建設(shè)模板北京搜索引擎優(yōu)化seo專員
  • 網(wǎng)站公司鄭州百度安裝app
  • seo網(wǎng)站編輯是做什么的競價排名深度解析
  • 網(wǎng)站開發(fā)使用的技術(shù)有哪些百度信息流推廣平臺
  • 新房網(wǎng)站建設(shè)日結(jié)app推廣聯(lián)盟
  • bootstrap 企業(yè)網(wǎng)站好的網(wǎng)絡(luò)推廣平臺
  • 網(wǎng)站建設(shè):宏智網(wǎng)絡(luò)科技商業(yè)推廣費(fèi)用一般多少
  • 馬克斯網(wǎng)站建設(shè)百度行發(fā)代理商
  • 公司網(wǎng)站模板凡建站如何做外貿(mào)網(wǎng)站的推廣
  • 網(wǎng)站制造關(guān)鍵詞優(yōu)化推廣排名多少錢
  • brophp框架做網(wǎng)站模板成人職業(yè)培訓(xùn)學(xué)校
  • 網(wǎng)站建設(shè)與app開發(fā)北京高端網(wǎng)站建設(shè)
  • 建個網(wǎng)站 網(wǎng)頁空間多少it培訓(xùn)機(jī)構(gòu)推薦
  • b2b商城網(wǎng)站推廣下載
  • 餐飲公司的網(wǎng)站建設(shè)鄭州高端網(wǎng)站制作
  • 網(wǎng)站建設(shè)簡介聯(lián)系方式哪家建設(shè)公司網(wǎng)站
  • 網(wǎng)站建設(shè)項目合同谷歌瀏覽器安卓版下載
  • 鄭州金水區(qū)建設(shè)局網(wǎng)站廣告營銷推廣
  • 淄博學(xué)校網(wǎng)站建設(shè)定制武漢網(wǎng)站優(yōu)化
  • 學(xué)計算機(jī)的做網(wǎng)站的叫什么工作網(wǎng)站推廣軟件哪個最好
  • 怎樣做服務(wù)型網(wǎng)站萬能軟文范例800字
  • 東莞網(wǎng)站建設(shè)電鍍掛具怎么讓百度快速收錄網(wǎng)站
  • 廣州海珠建網(wǎng)站怎么做好網(wǎng)絡(luò)推廣銷售
  • 做網(wǎng)站在哪個地方買空間網(wǎng)絡(luò)營銷是網(wǎng)上銷售嗎
  • 建筑三級資質(zhì)可承接工程范圍win7優(yōu)化
  • wordpress如何修改評論網(wǎng)頁搜索優(yōu)化seo
  • 絕對域名做網(wǎng)站軟文營銷的概念
  • 沒有網(wǎng)站備案可以做誠信認(rèn)證嘛市場調(diào)研分析報告范文
  • asp.net 企業(yè)網(wǎng)站系統(tǒng)百度站長收錄提交入口