67 lines
1.4 KiB
C++
67 lines
1.4 KiB
C++
#ifndef __HttpClient_H_
|
|
#define __HttpClient_H_
|
|
#pragma once
|
|
|
|
// 包含必要的头文件
|
|
#include "../Module/Comm/Socket/CCSocket.h"
|
|
#include "CCJSONObject.h"
|
|
#include "CCString.h"
|
|
#include <sstream>
|
|
#include <regex>
|
|
#include "map"
|
|
|
|
// 定义最大数据大小
|
|
#define MaxDataSize 2048
|
|
|
|
// 命名空间CTL开始
|
|
namespace CTL {
|
|
// 请求处理状态枚举
|
|
enum RequestProcessA
|
|
{
|
|
RequestProcessA_First,
|
|
RequestProcessA_Header,
|
|
RequestProcessA_Body,
|
|
};
|
|
|
|
// 响应结构体
|
|
struct CCResponseA
|
|
{
|
|
// 响应头
|
|
std::map<CTL::String, CTL::String> Headers;
|
|
// 缓冲区
|
|
char Buffer[MaxDataSize] = { 0 };
|
|
// 响应体
|
|
CTL::String Body;
|
|
// 请求方法
|
|
CTL::String Method;
|
|
// 请求路径
|
|
CTL::String Path;
|
|
// 协议版本
|
|
CTL::String Version;
|
|
// 状态码
|
|
int StatusCode = 0;
|
|
};
|
|
|
|
// HttpClient类
|
|
class HttpClient
|
|
{
|
|
private:
|
|
|
|
public:
|
|
// 构造函数
|
|
HttpClient();
|
|
// 析构函数
|
|
~HttpClient();
|
|
// 发起请求
|
|
CCResponseA Request(CTL::String Url,CTL::String Data,CTL::String Method);
|
|
private:
|
|
// 请求头
|
|
std::map<CTL::String, CTL::String> Headers;
|
|
// 解析URL
|
|
void parseURL(const std::string& url, std::string& scheme, std::string& ip, int& port, std::string& path);
|
|
};
|
|
}
|
|
|
|
// 命名空间CTL结束
|
|
#endif
|