持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
在需要从http上下拉数据到时用 需要进行一系列的流程,如图所示。此图来源于官网网站
可以同这个图片上了解到初始化的大概流程,但是在使用过程中会有一点小的变化(个人使用习惯问题)但是大致流程与此完全相同。
对 WinHTTP进行初始化
第一步:创建一个会话**
WinHttpOpen 他会返回一个句柄,主要在后续创建连接时使用,以便后续的使用。他的作用主要是维护 http 会话的详细信息。**
第二步 创建一个链接
WinHttpConnect 他所返回的句柄使用在后面的打开请求时,它用于指定目标的 http 以及端口。**
第三步 创建一个请求
WinHttpOpenRequest 他所返回的句柄使用在后面的发送请求时,他用来打开特定资源的 http 请求,但是他不会将请求发送到服务器上,如果需要发送请求到服务器上需要使用 WinHttpSendRequest 函数。**
**
第四步 发送请求标头
WinHttpAddRequestHeaders 它所使用的句柄是创建请求所返回的句柄,他允许讲其他自由格式的请求标头追加到 http 请求句柄,他的追加方式有五种。**
**
其中最常用的是 WINHTTP_ADDREQ_FLAG_ADD
| WINHTTP_ADDREQ_FLAG_ADD | 如果标头不存在,则添加标头。 与 WINHTTP_ADDREQ_FLAG_REPLACE一起使用。 |
|---|---|
| WINHTTP_ADDREQ_FLAG_ADD_IF_NEW | 仅当标头不存在时,才添加标头;否则,返回false。 |
| WINHTTP_ADDREQ_FLAG_COALESCE | 合并同名的标头。 |
| WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA | 使用逗号合并同名的标头。 由调用应用程序决定,以确保合并/单独标头的凝聚力方案。 |
| WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON | 使用分号合并同名的标头。 |
| WINHTTP_ADDREQ_FLAG_REPLACE | 替换或删除标头。 如果标头值为空且找到标头,则会将其删除。 如果标头值不为空,则替换标头值。 |
第五步 发送请求
WinHttpSendRequest 它所使用的句柄是创建请求所返回的句柄,他的作用是与服务器创建链接,并且把请求发到指定的站点。后续会涉及获取数据,但是要注意的是在获取数据之前必须使用WinHttpReceiveResponse才能access服务器返回的数据
第六步 获取数据
首先使用WinHttpQueryDataAvailable 获取请求返回的数量,在按照所返回的长度进行申请刷空间,最后通过WinHttpReadData服务服务器的返回数据