# http_test **Repository Path**: dazaisang/http_test ## Basic Information - **Project Name**: http_test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-14 - **Last Updated**: 2026-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HTTP JSON 传输工程 ## 项目简介 这是一个使用 C/C++ 实现的 HTTP JSON 传输工程,用于通过 HTTP 协议与服务器平台进行 JSON 数据的实时交互。 ## 功能特性 - ✅ HTTP POST 请求发送 JSON 数据 - ✅ HTTP GET 请求支持 - ✅ JSON 数据的创建和解析 - ✅ 完整的错误处理 - ✅ 跨平台支持 - ✅ 模块化设计,易于扩展 - ✅ 包含 HTTP 服务端实现(Python) ## 项目结构 ``` http_test/ ├── CMakeLists.txt # CMake构建配置 ├── README.md # 说明文档 ├── .gitignore # Git忽略文件 ├── http_server.py # HTTP服务端(Python) ├── include/ # 头文件目录 │ ├── http_client.h # HTTP客户端头文件 │ └── json_handler.h # JSON处理头文件 ├── src/ # 源文件目录 │ ├── main.c # 主程序 │ ├── http_client.c # HTTP客户端实现(使用libcurl) │ └── json_handler.c # JSON处理实现(使用cJSON) └── libs/ # 第三方库目录 └── cjson/ # cJSON库 ├── cJSON.h └── cJSON.c ``` ## 依赖项 ### 系统依赖 - **libcurl4-openssl-dev**:用于HTTP通信 - **CMake**:用于构建项目 - **Python 3**:用于运行HTTP服务端(可选) ### 内置依赖 - **cJSON**:轻量级JSON解析库(已集成) ## 安装依赖 在 Ubuntu 22.04 ARM64 系统上: ```bash sudo apt-get update sudo apt-get install -y libcurl4-openssl-dev cmake build-essential ``` 包名 类型 作用 build-essential 编译工具链 提供 gcc/make,让你能编译代码 cmake 构建配置工具 生成 Makefile,辅助编译 libcurl4-openssl-dev 系统开发库 HTTP 功能,给代码调用 ## 构建项目 ```bash # 进入项目目录 cd /root/http_test # 创建构建目录 mkdir -p build && cd build # 配置并构建 cmake .. make # 构建完成后会生成 http_test 可执行文件 ``` ## 使用方法 ### 1. 基本用法 ```bash # 使用默认测试地址 (http://httpbin.org/post) ./http_test # 指定自定义服务器地址 ./http_test http://your-server.com/api ``` ### 2. 与内置HTTP服务端通信 #### 启动服务端 ```bash cd /root/http_test python3 http_server.py ``` 服务端将在 `http://0.0.0.0:8081` 上运行 #### 运行客户端 ```bash cd /root/http_test/build ./http_test http://localhost:8081 ``` ## 测试示例 ### 客户端输出示例 ``` ========== 创建JSON数据 ========== 发送的JSON数据: { "device_id": "TEST-001", "timestamp": "2026-04-14T10:30:00", "temperature": 25.5, "humidity": 60, "status": true, "sensors": ["temp1", "hum1"] } ========== 发送HTTP POST请求 ========== 请求成功! 响应数据 (253 字节): {"status": "success", "message": "数据接收成功", "timestamp": "2026-04-14 09:10:42", "received_data": {"device_id": "TEST-001", "timestamp": "2026-04-14T10:30:00", "temperature": 25.5, "humidity": 60, "status": true, "sensors": ["temp1", "hum1"]}} ========== 解析响应JSON ========== JSON解析成功! ``` ### 服务端输出示例 ``` HTTP服务端启动成功! 服务地址: http://0.0.0.0:8081 等待客户端连接... 按 Ctrl+C 停止服务 [2026-04-14 09:10:42] 接收到JSON数据: { "device_id": "TEST-001", "timestamp": "2026-04-14T10:30:00", "temperature": 25.5, "humidity": 60, "status": true, "sensors": [ "temp1", "hum1" ] } ``` ## 代码结构说明 ### HTTP客户端模块 (`http_client.c`) - `http_post_json()`: 发送JSON数据的POST请求 - `http_get()`: 发送GET请求 - 基于libcurl实现,支持HTTPS、代理等高级功能 ### JSON处理模块 (`json_handler.c`) - `create_test_json()`: 创建测试JSON对象 - `cjson_to_string()`: 将JSON对象转换为字符串 - `parse_json_string()`: 解析JSON字符串 - `free_json()`: 释放JSON对象 - 基于cJSON库实现,轻量高效 ### 主程序 (`main.c`) - 命令行参数处理 - JSON数据创建 - HTTP请求发送 - 响应处理和解析 ### HTTP服务端 (`http_server.py`) - 基于Python标准库实现的HTTP服务器 - 支持POST请求处理 - 实时JSON数据解析和响应 ## 扩展指南 ### 自定义JSON数据 修改 `src/json_handler.c` 中的 `create_test_json()` 函数: ```c cJSON* create_test_json() { cJSON *root = cJSON_CreateObject(); // 添加自定义字段 cJSON_AddStringToObject(root, "custom_field", "value"); // ... return root; } ``` ### 扩展服务端功能 修改 `http_server.py` 中的 `process_data()` 方法: ```python def process_data(self, data): """处理接收到的数据""" # 添加自定义业务逻辑 print(f"处理设备 {data.get('device_id')} 的数据") # 例如:存储到数据库、触发事件等 ``` ### 添加新的HTTP方法 在 `http_client.c` 中添加新的函数: ```c int http_put_json(const char *url, const char *json_data, char **response, size_t *response_size) { // 实现PUT请求逻辑 // ... } ``` ## 故障排除 ### 常见问题 1. **编译错误**:确保已安装所有依赖项 2. **网络连接失败**:检查网络连接和服务器地址 3. **JSON解析错误**:确保发送的是有效的JSON格式 4. **端口被占用**:修改服务端端口或停止占用端口的进程 ### 调试技巧 - 查看服务端日志输出 - 检查客户端错误码 - 使用工具如 `curl` 测试HTTP接口 - 添加调试输出到代码中 ## 技术栈 - **客户端**:C/C++ - **HTTP库**:libcurl - **JSON库**:cJSON - **构建系统**:CMake - **服务端**:Python 3 ## 许可证 本项目采用 MIT 许可证。 ## 贡献 欢迎提交问题和改进建议!