1.ghttp数据结构族谱
本库中使用的数据结构还是非常清晰的,结构体以及枚举数据也不是太多,如图整个数据结构族谱非常的清晰
2.结构体详解
ghttp代码中维护一个全局的结构体struct _ghttp_request,这里面包含了所有的操作数据,包括url、代理信息、请求、应答以及网络等信息
struct _ghttp_request
{
http_uri *uri;//请求URL
http_uri *proxy;//请求代理的URL
http_req *req;//request内容
http_resp *resp;//应答结构体
http_trans_conn *conn; //底层网络数据
const char *errstr;//错误字符串
int connected;//socket句柄
ghttp_proc proc;//处理项
char *username;//用户名
char *password;//密码
char *authtoken;//authtoken认证字段
char *proxy_username;//代理用户名
char *proxy_password;//代理密码
char *proxy_authtoken;//代理authtoken认证字段
};
2.1 http_uri
将传入的url字符串解析之后赋值到该结构体进行处理
/* URL结构体 */
typedef struct http_uri_tag
{
char *full; /* 传入的URL,比如:http://1.1.1.1:80/api/login */
char *proto;/*从URL中解析出来即:http */
char *host;/* 从URL中解析出来的IP或者域名,如full中的1.1.1.1 */
unsigned short port;/* 从URL中解析出来的端口,如full中的80 */
char *resource;/* 从URL中解析出来的请求资源,如full中的/api/login */
} http_uri;