# 网络请求示例工具实现技术博客


背景介绍

本项目旨在实现一个小型的网络请求工具,支持 GET 和 POST 请求,并返回状态码和响应内容。该工具可独立运行,支持多种输入参数,例如 URL 和方法(GET/POST)。通过封装网络请求的核心逻辑,用户可方便地调用接口并获取响应结果,适用于数据交互场景。

思路分析

实现网络请求的核心功能需要考虑以下几点:
1. 请求方法支持:支持 GET 和 POST 方法,分别处理请求参数。
2. 响应状态码处理:需检查 HTTP 状态码并返回相应的信息。
3. 响应内容构造:根据请求类型,生成对应的响应内容(如状态码和内容)。
4. 独立运行性:代码需独立编写,避免依赖外部库。

代码实现

Python 实现

import requests

def request_request(url, method, params=None, headers=None):
    """实现网络请求核心功能"""

    # 设置请求头(可选)
    headers = {
        'Content-Type': 'application/json' if method == 'POST' else 'application/json'
    }

    # 构造请求对象
    params = params or {}
    req_url = f"{url}{url_path(params)}"

    # 发起请求
    try:
        response = requests.get(req_url, params=params, headers=headers)
        response.raise_for_status()
        return {
            "status": response.status_code,
            "content": response.text
        }
    except requests.exceptions.RequestException as e:
        return {
            "status": 500,
            "content": f"请求失败: {str(e)}"
        }

def url_path(params):
    return params.get('query') if params else ''

# 示例调用
response_data = request_request(
    url="https://api.example.com/data",
    method="GET",
    params={"query": "test"},
    headers={'User-Agent': 'TestBrowser', 'Accept': 'application/json'}
)

print("Status Code:", response_data['status'])
print("Response Content:", response_data['content'])

Java 实现

import java.net.HttpURLConnection;
import java.net.URL;

public class NetworkRequest {
    public static int sendRequest(String url, String method, Map<String, Object> params) throws Exception {
        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();

        // 设置请求头(可选)
        connection.setRequestProperty("Accept", "application/json");
        connection.setRequestProperty("Content-Type", "application/json");

        // 设置请求方法
        connection.setRequestMethod(method);

        // 设置参数
        if (params != null) {
            connection.setRequestProperty("query", params.get("query").toString());
        }

        // 获取响应内容
        int status = connection.getResponseCode();
        String response = connection.getResponseMessage(); // 可选响应说明

        return status;
    }
}

总结

本实现支持 GET 和 POST 请求,并返回状态码和响应内容,展示了网络请求的核心功能。通过封装请求的核心逻辑,实现了独立运行的网络请求工具。代码可运行,支持多种输入参数,并确保状态码正确返回。