背景介绍
本项目旨在实现一个小型的网络请求工具,支持 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 请求,并返回状态码和响应内容,展示了网络请求的核心功能。通过封装请求的核心逻辑,实现了独立运行的网络请求工具。代码可运行,支持多种输入参数,并确保状态码正确返回。