main.py 2.0 KB
Newer Older
S
superyan 已提交
1
import streamlit as st
View Design's avatar
View Design 已提交
2 3 4
import requests
import datetime
import json
S
superyan 已提交
5

View Design's avatar
View Design 已提交
6
st.set_page_config(page_title="HTTP请求模拟工具", page_icon="🚀")
S
superyan 已提交
7

View Design's avatar
View Design 已提交
8 9 10 11 12 13 14 15
st.markdown("""
    # HTTP请求模拟工具
    ### 功能点:
    1. 发送HTTP请求:用户输入请求URL、请求方法和请求头信息,工具对请求进行封装后发送HTTP请求。
    2. 查看响应结果:工具接收到服务器响应后,将响应结果展示给用户以便于查看。
    3. 关注请求细节:用户可以查看请求发送的细节信息,包括请求发送时间、请求耗时、请求大小等。
    ---
    """)
S
superyan 已提交
16

View Design's avatar
View Design 已提交
17 18 19
url = st.text_input("请输入请求URL:", value="https://e.weather.com.cn/p/site/aqifc1h?areaid=101010300")
method = st.selectbox("请选择请求方法:", ["GET", "POST", "PUT", "DELETE"])
headers = st.text_area("请输入请求头信息,格式如:{'key1': 'value1', 'key2': 'value2'}")
S
superyan 已提交
20

View Design's avatar
View Design 已提交
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
if st.button("发送请求"):
    if headers:
        try:
            headers = eval(headers)
        except Exception as e:
            st.error("请求头信息格式有误,请确认输入的是字典格式,例如:{'key1': 'value1', 'key2': 'value2'}")
            headers = None
    else:
        headers = None
    start_time = datetime.datetime.now()
    try:
        response = requests.request(method=method, url=url, headers=headers)
        end_time = datetime.datetime.now()
        time_taken = end_time - start_time
        size = len(response.content)
        st.subheader("响应结果:")
        try:
            pretty_json = json.loads(response.text)
            st.json(pretty_json)
        except:
            st.text(response.text)
        st.subheader("请求细节:")
        st.write(f"请求方法:{method}")
        st.write(f"请求URL:{url}")
        st.write(f"请求头:{headers}")
        st.write(f"请求发送时间:{start_time}")
        st.write(f"请求耗时:{time_taken}")
        st.write(f"请求大小:{size} bytes")
    except Exception as e:
        st.error(f"请求发送失败:{e}")