當前位置:博客首頁>>Python >> 閱讀正文

用TKinter實現(xiàn)的一個簡版HTTP請求模擬器

作者: 鄭曉 分類: Python 發(fā)布于: 2015-04-28 23:42 瀏覽:8,532 評論(8)


平時開發(fā)過程中經(jīng)常會遇到需要模擬POST或GET請求的時候,當然GET一般直接通過瀏覽器也可以,方便快捷。鄭曉看到網(wǎng)上也有不少軟件版的HTTP模擬器,功能也非常強大。鄭曉最近在學習Python,正好手閑的慌,就用Python自帶的TKinter庫寫了個HTTP模擬工具,功能比較簡單,只是實現(xiàn)了基本的功能。

最近我發(fā)現(xiàn)有的網(wǎng)站復制了我的文章,還把里面的各種信息都替換成了他自己的,還自己運行了程序截的圖,也是挺郁悶的…所以以后發(fā)的代碼中,鄭曉可能會隨機在其中加一點兒小點心…

這個tkinter的http模擬器代碼如下,開發(fā)環(huán)境(win7 + Python2.7)

# -*- coding: utf-8 -*-
from Tkinter import *
from ttk import *
from urlparse import urlparse
import urllib
#提交時的響應(yīng)事件
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請求的參數(shù):" + entry_query

url_parse = urlparse(url)
query = url_parse.query.strip('&') +entry_query
#POST(請求原始URL, 使用編碼后的參數(shù))
try:
if v.get() == 1:
r = urllib.urlopen(url, entry_query)
#GET(根據(jù)提交的參數(shù)重新組合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 + '請求返回結(jié)果' + "-"*28 + data
#將結(jié)果輸出(更新)到文本域
text_result.delete(0.0, END)
text_result.insert(1.0, result)

#####創(chuàng)建窗口#####
app = Tk()
app.title("HTTP請求模擬 v0.1")
app.geometry('500x500')

#####創(chuàng)建控件#####
#第一行 地址
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()
#第三行 參數(shù)
lbl_para = Label(app, text="請求參數(shù):")
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="發(fā)送請求")
btn_submit.bind('', btn_submitOp)
btn_submit.grid(row=3, column=0, sticky=W, padx=10,pady=10)

#第五行 返回結(jié)果
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請求模擬器

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://yjfs.org.cn/http-tkinter-1.html

用TKinter實現(xiàn)的一個簡版HTTP請求模擬器:目前有8 條留言

用戶評論頭像 詩水蛇山神廟發(fā)表于 2015年06月19日 19:47[回復]

博客排版很漂亮!

用戶評論頭像 免費廣告論壇發(fā)表于 2015年05月23日 22:03[回復]

支持一個

用戶評論頭像 情侶網(wǎng)名發(fā)表于 2015年05月17日 11:35[回復]

不錯哦,學習了

用戶評論頭像 高傭金聯(lián)盟發(fā)表于 2015年05月14日 16:20[回復]

學習了,感謝分享

用戶評論頭像 淘搶購發(fā)表于 2015年05月14日 16:03[回復]

很實用

用戶評論頭像 李曉鵬發(fā)表于 2015年05月09日 18:09[回復]

不錯 學習了 。

用戶評論頭像 魚兒離不開水QQ發(fā)表于 2015年05月05日 21:25[回復]

?? ?? ?? 博主很受用謝謝

    用戶評論頭像 鄭曉發(fā)表于 2015年05月06日 17:22[回復]

    啥意思啊 ??

發(fā)表評論

change vcode