python用TKinter實現的一個簡版HTTP請求模擬器

來源:互聯網
上載者:User


平時開發過程中經常會遇到需要類比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()
過程式編程看上去比較亂… 以下是運行截圖,測試請求的是圖靈機器人聊天介面。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.