没有合适的资源?快使用搜索试试~ 我知道了~
首页WinHTTP编程参考手册.pdf
资源详情
资源评论
资源推荐

Windows HTTP 编程参考手册 资料作者:毕业季的迷茫 2020 年 5 月 24 日 保留所有版权 email: 751740465@qq.com
WINHTTP 编程手册 第 1 页
目 录
一、关于 WinHTTP......................................................................................................................................... 4
1.1 术语 .................................................................................................................................................. 4
(1) HTTP 事务 .................................................................................................................................. 4
(2) 代理服务 .................................................................................................................................. 5
(3) 同步与异步操作 ...................................................................................................................... 5
(4) 认证 .......................................................................................................................................... 5
二、使用 WinHTTP C/C++ API ........................................................................................................................ 5
2.1 WinHTTP 概述 ................................................................................................................................... 5
(1) 初始化 WinHTTP ...................................................................................................................... 6
(2) 打开一个请求 .......................................................................................................................... 6
(3) 添加请求头信息 ...................................................................................................................... 6
(4) 发送请求 .................................................................................................................................. 6
(5) 传送数据给服务器................................................................................................................... 6
(6) 获取请求信息 .......................................................................................................................... 7
(7) 从 Web 下载资源 ..................................................................................................................... 7
2.2 HINTERNET 句柄 ............................................................................................................................... 9
(1) 关于 HINTERNERT 句柄 ............................................................................................................ 9
(2) 句柄命名 .................................................................................................................................. 9
(3) 句柄层级 ................................................................................................................................ 10
(4) 句柄层次结构的说明............................................................................................................. 11
2.3 WinHTTP 中的 URL ......................................................................................................................... 11
(1) 什么是规范化 URL ................................................................................................................. 11
(2) 使用 WinHTTP 函数处理 url .................................................................................................. 12
(3) 分离的 url ............................................................................................................................... 12
(4) 创建 url ................................................................................................................................... 12
(5) 示例代码 ................................................................................................................................ 12
2.4 WinHTTP 中的认证 ......................................................................................................................... 13
(1) 关于 HTTP 身份验证 .............................................................................................................. 14
(2) 在 WinHTTP 应用程序中进行身份验证 ............................................................................... 14
(3) 自动登录策略 ........................................................................................................................ 20
(4) 已存储的用户名和密码 ......................................................................................................... 21
2.5 WinHTTP 中的 SSL .......................................................................................................................... 21
(1) 安全套接层 ............................................................................................................................ 21
(2) 服务端证书 ............................................................................................................................ 21
(3) 客户端证书 ............................................................................................................................ 22
(4) WinHTTP API ............................................................................................................................ 22
(5) 检索 SSL 客户端身份验证的发行者列表 ............................................................................. 23
(6) 可选客户端 SSL 证书 ............................................................................................................. 24
(7) WinHttpRequest 对象.............................................................................................................. 25
2.6 WinHTTP 中的异步完成 ................................................................................................................. 25
2.7 检索 WinHTTP 中的网络选项 ....................................................................................................... 26

Windows HTTP 编程参考手册 资料作者:毕业季的迷茫 2020 年 5 月 24 日 保留所有版权 email: 751740465@qq.com
WINHTTP 编程手册 第 2 页
(1) 先决条件和要求 .................................................................................................................... 26
(2) 检索连接超时 ........................................................................................................................ 26
(3) 检索一个 URL ......................................................................................................................... 28
2.8 设置 WinHTTP 中的选项 ............................................................................................................... 30
(1) 先决条件和要求 .................................................................................................................... 30
(2) 打开“setoption.cpp“源文件 .............................................................................................. 30
(3) 包括头文件和库文件............................................................................................................. 30
(4) 初始化 .................................................................................................................................... 30
(5) 查询连接超时选项................................................................................................................. 31
(6) 设置并验证连接超时............................................................................................................. 31
(7) 清理并退出 ............................................................................................................................ 32
2.9 WinHTTP 中的 Cookie 处理 ............................................................................................................ 32
(1) 禁用自动 Cookie 处理 ........................................................................................................... 33
(2) 手动指定所有 cookie ............................................................................................................. 33
(3) 手动和自动 Cookie 处理 ....................................................................................................... 33
(4) 删除 Cookie 头 ....................................................................................................................... 33
2.10 自动代理支持 .............................................................................................................................. 34
(1) WinHTTP 自动代理功能 ......................................................................................................... 34
(2) Discovery Without an Auto-Config File.................................................................................... 39
(3) WinHTTP 中的自动代理问题 ................................................................................................. 40
(4) 在 WinHTTP 中设置 WinINet 代理配置 ................................................................................ 41
(5) AutoProxy Cache ...................................................................................................................... 42
三、WinHTTP C/ c++ API 参考 ..................................................................................................................... 43
3.1 WinHTTP 函数 ................................................................................................................................. 43
WinHttpAddRequestHeaders ........................................................................................................ 44
WinHttpCheckPlatform ................................................................................................................. 47
WinHttpCloseHandle ..................................................................................................................... 48
WinHttpConnect ........................................................................................................................... 50
WinHttpCrackUrl ........................................................................................................................... 53
WinHttpCreateUrl .......................................................................................................................... 56
WinHttpDetectAutoProxyConfigUrl .............................................................................................. 58
WinHttpGetDefaultProxyConfiguration ........................................................................................ 58
WinHttpGetIEProxyConfigForCurrentUser .................................................................................... 60
WinHttpGetProxyForUrl ................................................................................................................ 60
WinHttpOpen ................................................................................................................................ 62
WinHttpOpenRequest ................................................................................................................... 64
WinHttpQueryAuthSchemes ......................................................................................................... 67
WinHttpQueryDataAvailable ......................................................................................................... 73
WinHttpQueryHeaders .................................................................................................................. 76
WinHttpQueryOption .................................................................................................................... 80
WinHttpReceiveResponse ............................................................................................................. 81
WinHttpSendRequest .................................................................................................................... 85
WinHttpSetCredentials .................................................................................................................. 90
WinHttpSetDefaultProxyConfiguration ......................................................................................... 91

Windows HTTP 编程参考手册 资料作者:毕业季的迷茫 2020 年 5 月 24 日 保留所有版权 email: 751740465@qq.com
WINHTTP 编程手册 第 3 页
WinHttpSetOption ......................................................................................................................... 92
WinHttpSetStatusCallback ............................................................................................................ 93
WinHttpSetTimeouts .................................................................................................................... 96
WinHttpTimeFromSystemTime .................................................................................................... 98
WinHttpTimeToSystemTime ......................................................................................................... 99
WinHttpWriteData ...................................................................................................................... 100
3.2 WINHTTP 回调 ............................................................................................................................. 103
3.3 WINHTTP 结构体 .......................................................................................................................... 106
HTTP_VERSION_INFO .................................................................................................................. 106
URL_COMPONENTS ..................................................................................................................... 106
WINHTTP_ASYNC_RESULT ........................................................................................................... 108
WINHTTP_AUTOPROXY_OPTIONS............................................................................................... 109
WINHTTP_CERTIFICATE_INFO ..................................................................................................... 110
WINHTTP_CONNECTION_INFO ................................................................................................... 111
WINHTTP_CREDS_EX ................................................................................................................... 112
WINHTTP_CURRENT_USER_IE_PROXY_CONFIG ......................................................................... 113
WINHTTP_PROXY_INFO............................................................................................................... 114
3.4 WINHTTP 枚举 .............................................................................................................................. 115
WinHttpRequestAutoLogonPolicy ............................................................................................... 115
WinHttpRequestOption ............................................................................................................... 115
3.5 WINHTTP 常量 .............................................................................................................................. 118
错误代码 ..................................................................................................................................... 118
HTTP 状态码 ............................................................................................................................... 124
选项标志 ..................................................................................................................................... 127
查询信息标志 ............................................................................................................................. 139
四、相关术语 ............................................................................................................................................. 144
authentication data ............................................................................................................................. 144
base64 encoding ................................................................................................................................. 144
certificate store ................................................................................................................................... 145
cobranding ........................................................................................................................................... 145
code page ............................................................................................................................................ 145
HTTP verb ............................................................................................................................................ 145
ticket .................................................................................................................................................... 145
user agent ............................................................................................................................................ 145

Windows HTTP 编程参考手册 资料作者:毕业季的迷茫 2020 年 5 月 24 日 保留所有版权 email: 751740465@qq.com
WINHTTP 编程手册 第 4 页
一、关于 WinHTTP
HTTP/1.1 Internet 协议接口,WinINet 是一种较老的技术,它被设计为用于交互式桌面应用程序(如
Microsoft Internet Explorer、Microsoft Office 和 Microsoft Money)的 HTTP 客户端平台。需要 HTTP 客户
端服务的服务器应用程序应该使用 WinHTTP 而不是 WinINet。
WinHTTP 还设计用于系统服务和基于 http 的客户机应用程序。WinHTTP 比 WinINet 更安全、更健壮。
但是,需要 FTP 或 Gopher 协议功能、cookie 持久性、缓存、自动凭据对话框处理、Internet Explorer
兼容性或底层平台支持的单用户应用程序应该考虑使用 WinInet。
在 WinHTTP 的 5.1 版本中添加了以下特性:
(1) IPV6 支持
(2) AutoProxy 功能
(3) HTTP/1.0 协议,包括对保持活动(持久)连接和会话 cookie 的支持
(4) HTTP/1.1 块传输支持 HTTP 响应
(5) 跨会话保持匿名连接池的存活
(6) 安全套接字层(SSL)功能,包括客户端证书。支持的 SSL 协议包括以下内容:SSL 2.0、SSL 3.0 和传输
层安全性(TLS) 1.0
(7) 支持服务器和代理身份验证,包括对 Microsoft Passport 1.4 和 Negotiate/ Kerberos 包的集成支持
(8) 自动处理重定向,除非抑制
(9) 除了 API 之外,还有可编写脚本的接口
(10) 跟踪实用程序来帮助排除问题
1.1 术语
(1) HTTP 事务
方的另一台计算机交换信息。交换的信息可以是包含文本或多媒体的文件,也可以是数据库查询的
结果。通过网络交换的一段信息称为资源。通常,发送资源的计算机是服务器,接收该资源的计算
机是客户机。但是,客户端也可以将数据发送到服务器。有时,HTTP 事务涉及中间层服务器。一个
中间层服务器收集多个资源.
使用 HTTP 协议获取资源的过程需要在客户机和服务器之间交换一系列消息。客户端通过发送请求资
源的消息开始事务。此消息称为 HTTP 请求,有时也称为请求。
HTTP 请求由以下组件组成:
方法(GET/POST/PUT/HEADER/…), URI, 协议版本号
报文头部
报文主体
HTTP 响应:
协议版本号, 状态码, 状态文本
报文头部
报文主体

Windows HTTP 编程参考手册 资料作者:毕业季的迷茫 2020 年 5 月 24 日 保留所有版权 email: 751740465@qq.com
WINHTTP 编程手册 第 5 页
(2) 代理服务
尽管客户端发送的请求最终被目标服务器接收,但有时事务首先通过代理服务器。代理拦截请求,
甚至可以在将请求发送到服务器之前修改请求。当服务器响应时,响应在转发到客户机之前也会通
过代理。代理可以修改此响应中的标头。
通过截取和翻译网络事务,代理可以:
通过监视潜在的危险事务来保护客户端
使客户端能够使用客户端软件可能无法实现的协议进行通信
充当私有网络和公共网络之间的网关
(3) 同步与异步操作
有两种使用 winhttp 在网络上获取资源的编程模型—同步和异步模型。在同步模型中,对函数或方法
的调用直到请求的操作完成或出现错误才结束。例如,当您的应用程序同步使用 WinHTTP 请求资源
时,它不会继续进行下一步,直到接收到所请求的数据。
另一方面,异步模型允许应用程序在等待检索资源时执行其他任务。如果调用了另一个 WinHTTP 函
数或方法,而前一个操作尚未完成,该函数将返回一个错误。当异步使用 WinHTTP 时,组件对象模
型(COM)事件和回调可用来通知应用程序 HTTP 操作的进展。
(4) 认证
身份验证是 HTTP 代理或 HTTP 服务器在允许访问资源之前验证用户的登录信息的过程。在 Internet
上使用各种身份验证方案。通常,将用户名和密码与授权列表进行比较,如果系统检测到匹配,则
根据用户的权限列表中指定的范围授予访问权限。
WinHTTP 函数同时支持 HTTP 会话的服务器和代理身份验证。WinHTTP 支持以下身份验证方案:Basic、
Digest(参见 RFC 2617)、NTLM 身份验证、Negotiate/ Kerberos 和 Microsoft Passport 1.4。有关身份验证
的详细信息,以及在 Microsoft Visual c++应用程序中使用身份验证的示例,请参见 WinHTTP 中的身
份验证。
二、使用 WinHTTP C/C++ API
2.1 WinHTTP 概述
Microsoft Windows HTTP Services (WinHTTP)公开了一组 C/ c++函数,使您的应用程序能够访问 Web
上的 HTTP 资源。本主题概述了如何使用这些函数与 HTTP 服务器进行交互。
剩余144页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0