# 网络通信工具实现:发送GET请求和接收数据


背景介绍

本工具实现了一个小型网络通信框架,支持发送GET请求获取URL响应内容,并接收并解析来自网络的请求数据。该工具可运行在本地环境,通过输入HTTP请求参数,自动交互处理,同时支持本地文件存储和响应内容保存。

思路分析

本工具的实现分为两个核心功能模块:
1. 请求发送模块:使用requests.get发送HTTP GET 请求,提取请求参数并解析响应内容
2. 数据存储模块:将响应内容保存为本地文件,同时可存储请求参数信息

实现细节包括:
– 输入处理:通过用户交互获取请求参数,提取URL和消息内容
– 响应内容保存:使用JSON格式保存响应数据
– 文件存储逻辑:在本地文件中写入响应内容

代码实现

import requests
import json

def send_get_request(url, params=None):
    """
    发送GET请求获取指定URL的响应内容,支持参数解析。

    参数:
    url (str): 请求的URL字符串
    params (dict): 请求参数,可传入字典形式(如{"msg": "Hello World"})

    返回:
    dict: 响应内容(JSON格式)
    """
    try:
        response = requests.get(url, params=params)
        # 处理可能的异常,如超时或错误
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"请求失败: {e}")
        return None

def save_response_to_file(content, filename="response.json"):
    """
    将响应内容保存到本地文件中
    参数:
    content (dict): 响应内容(JSON格式)
    filename (str): 存储路径(可自定义)
    """
    try:
        with open(filename, "w", encoding="utf-8") as f:
            json.dump(content, f, indent=2)
        print(f"响应内容已保存到: {filename}")
    except Exception as e:
        print(f"保存响应内容时出错: {e}")

def main():
    # 示例输入处理
    input_line = input("请输入请求参数: GET /api/endpoint?msg=Hello World\n")

    # 提取请求参数
    url_params = input_line.split("?")[1].split("=")[1]
    params = url_params.split("?")[1].split("=")[1] if "?" in url_params else {}

    # 发送GET请求获取响应内容
    response_content = send_get_request(url="http://localhost:8000/api/endpoint", params=params)

    # 存储响应内容  
    save_response_to_file(response_content, "response.json")

if __name__ == "__main__":
    main()

总结

本工具实现了以下核心功能:
1. 支持通过GET请求获取指定URL的响应内容
2. 可接收并解析来自网络的请求参数
3. 支持在本地环境中运行,数据存储为JSON格式
4. 提供可交互的输入输出功能

该工具可帮助开发者在本地环境进行网络通信测试,并通过本地文件保存响应数据,便于后续调试和扩展。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注