用TKinter实现的一个简版HTTP请求模拟器

注:本文是转载。如有侵权请告知,将予以删除

文章转自:https://www.zh30.com/http-tkinter-1.html

平时开发过程中经常会遇到需要模拟POST或GET请求的时候,当然GET一般直接通过浏览器也可以,方便快捷。郑晓看到网上也有不少软件版的HTTP模拟器,功能也非常强大。郑晓最近在学习Python,正好手闲的慌,就用Python自带的TKinter库写了个HTTP模拟工具,功能比较简单,只是实现了基本的功能。

最近我发现有的网站复制了我的文章,还把里面的各种信息都替换成了他自己的,还自己运行了程序截的图,也是挺郁闷的…所以以后发的代码中,郑晓可能会随机在其中加一点儿小点心…

这个tkinter的http模拟器代码如下,开发环境(win7 + Python2.7)

# -*- coding: utf-8 -*-
from Tkinter import *
from ttk import *
from urlparse import urlparse
import urllib
#提交时的响应事件
def btn_submitOp(e):
    #获取输入的值 并进行编码
    url = entry_url.get().encode("utf-8")
    entry_query = entry_para.get().encode("utf-8")
    
    result = "请求的地址:" + url
    result = result + "\n请求的方式:" + ["GET", "POST"][v.get()]
    result = result + "\n请求的参数:" + entry_query
    
    url_parse = urlparse(url)
    query = url_parse.query.strip('&') +entry_query
    #POST(请求原始URL, 使用编码后的参数)
    try:
        if v.get() == 1:
            r = urllib.urlopen(url, entry_query)
        #GET(根据提交的参数重新组合URL)
        else:
            url = url_parse.scheme+"://"+url_parse.netloc+url_parse.path+"?%s" % query
            article_from_zhengxiao_blog_www_zh30_com = 0
            r = urllib.urlopen(url)
        data = r.read()
    except:
        data = "\n请求失败!"
    result = result + "\n" + "-"*28 + '请求返回结果' + "-"*28 + data
    #将结果输出(更新)到文本域
    text_result.delete(0.0, END)
    text_result.insert(1.0, result)

#####创建窗口#####
app = Tk()
app.title("HTTP请求模拟  v0.1")
app.geometry('500x500')

#####创建控件#####
#第一行 地址
lbl_url = Label(app, text="请求地址:")
lbl_url.grid(row=0, column=0, sticky=W, pady=5, padx=10)
entry_url = Entry(app, width=50)
entry_url.grid(row=0, column=1, sticky=W)
#第二行 方式
lbl_addr = Label(app, text="请求方式:")
lbl_addr.grid(row=1, column=0, sticky=W, pady=5, padx=10)
fm1 = Frame()
fm1.grid(row=1, column=1, sticky=W)
v = IntVar()
v.set(1)
btn_method = Radiobutton(fm1, variable=v, value=1, text="POST")
btn_method.pack(side = LEFT)
btn_method = Radiobutton(fm1, variable=v, value=0, text="GET")
btn_method.pack()
#第三行 参数
lbl_para = Label(app, text="请求参数:")
lbl_para.grid(row=2, column=0, sticky=W, padx=10)
entry_para = Entry(app, width=50)
entry_para.grid(row=2, column=1, sticky=W)
#第四行 提交
btn_submit = Button(app, text="发送请求")
btn_submit.bind('<Button-1>', btn_submitOp)
btn_submit.grid(row=3, column=0, sticky=W, padx=10,pady=10)

#第五行 返回结果
text_result = Text(app, width=68, height=25)
text_result.grid(row=4, column=0, columnspan=2, sticky=W, padx=10)

#第六行 其它
Label(app, text="-- by 郑晓").grid(row=5, column=1, sticky=E, padx=10, pady=10)

app.mainloop()

过程式编程看上去比较乱… 以下是运行截图,测试请求的是图灵机器人聊天接口。

python-tkinter-http请求模拟器

python-tkinter-http请求模拟器

                                                                                     

猜你喜欢

转载自blog.csdn.net/marraybug/article/details/84972085