描述
WinHttpOpenRequest函数创建一个HTTP请求句柄。
C / C ++语法
HINTERNET WinHttpOpenRequest( HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, LPCWSTR pwszVersion, LPCWSTR pwszReferrer, LPCWSTR* ppwszAcceptTypes, DWORD dwFlags ); |
PowerBASIC 语法
FUNCTION WinHttpOpenRequest ( _ BYVAL hConnect AS DWORD, _ BYREF pwszVerb AS WSTRINGZ, _ BYREF pwszObjectName AS WSTRINGZ, _ BYREF pwszVersion AS WSTRINGZ, _ BYREF pwszReferrer AS WSTRINGZ, _ BYREF ppwszAcceptTypes AS WSTRINGZ, _ BYVAL dwFlags AS DWORD _ ) AS DWORD |
参数
hConnect
[in]WinHttpConnect返回的HTTP会话的HINTERNET连接句柄。
pwszVerb
[in]指向包含要在请求中使用的HTTP动词的以null结尾的Unicode字符串的指针。如果此参数为NULL,则该函数使用GET作为HTTP动词。
重要此字符串应全部为大写。许多服务器将HTTP动词视为区分大小写,互联网工程任务组(IETF)请求注释(RFC)仅使用大写字符拼写这些动词。
pwszObjectName
[in]指向包含指定HTTP动词的目标资源名称的以null结尾的Unicode字符串的指针。这通常是文件名,可执行模块或搜索说明符。
pwszVersion
[in]指向包含HTTP版本的以null终止的Unicode字符串的指针。如果此参数为NULL,则该函数使用HTTP / 1.1。
pwszReferrer
[in]指向以null结尾的Unicode字符串的指针,该字符串指定获取请求pwszObjectName中的URL的文档的URL。如果此参数设置为WINHTTP_NO_REFERER,则不指定引用文档。
pwszAcceptTypes
[in]指向指定客户端接受的媒体类型的空值终止的字符串指针数组的指针。如果此参数设置为WINHTTP_DEFAULT_ACCEPT_TYPES,则客户端不接受任何类型。通常,服务器处理缺乏接受的类型,表示客户端仅接受类型为“text / *”的文档;也就是说,只有文本文件—没有图片或其他二进制文件。有关有效媒体类型的列表,请参阅媒体类型.
dwFlags
[in]包含Internet标志值的无符号长整型值。这可以是一个或多个以下值:
WINHTTP_FLAG_BYPASS_PROXY_CACHE
此标志提供与WINHTTP_FLAG_REFRESH相同的行为。
WINHTTP_FLAG_ESCAPE_DISABLE
传递给pwszObjectName的网址中的不安全字符不会转换为转义序列。
WINHTTP_FLAG_ESCAPE_DISABLE_QUERY
传入pwszObjectName的网址的查询组件中的不安全字符不会转换为转义序列。
WINHTTP_FLAG_ESCAPE_PERCENT
传递给pwszObjectName的字符串从WSTRINGZ(空值终止的Unicode字符串)转换为ASCIIZ(以null结尾的ANSI字符串)。所有不安全的字符都将转换为包含百分比符号的转义序列。默认情况下,除百分比符号之外的所有不安全字符都将转换为转义序列。
WINHTTP_FLAG_NULL_CODEPAGE
传入的字符串pwszObjectName被假定为由宽字符表示的有效ANSI字符组成。对不安全的角色不做任何检查。
WINHTTP_FLAG_REFRESH
表示请求应转发到始发服务器,而不是从代理服务器发送资源的缓存版本。当使用此标志时,会在请求句柄中添加“Pragma:no-cache”标头。当创建HTTP / 1.1请求头时,还会添加“Cache-Control:no-cache”。
WINHTTP_FLAG_SECURE
使用安全的事务语义。这转换为使用安全套接字层(SSL)/传输层安全性(TLS)。
返回值
如果成功,返回一个有效的会话句柄,否则返回NULL。要检索扩展错误信息,请调用GetLastError.返回的错误代码有:
错误代码 |
描述 |
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE |
提供的手柄类型对于此操作是不正确的。 |
ERROR_WINHTTP_INTERNAL_ERROR |
发生内部错误。 |
ERROR_WINHTTP_INVALID_URL |
网址无效 |
ERROR_WINHTTP_OPERATION_CANCELLED |
操作被取消,通常是因为在操作完成之前,请求的操作被关闭。 |
ERROR_WINHTTP_UNRECOGNIZED_SCHEME |
URL指定了除“http:”或“https:”之外的方案。 |
ERROR_NOT_ENOUGH_MEMORY |
没有足够的内存来完成请求的操作。(Windows错误代码) |
备注
即使在异步模式下使用WinHTTP(也就是说,当WinHttpOpen中设置了WINHTTP_FLAG_ASYNC)时,此函数将同步运行。返回值表示成功或失败。要获取扩展错误信息,请调用GetLastError.
WinHttpOpenRequest函数创建一个新的HTTP请求句柄,并将指定的参数存储在该句柄中。HTTP请求句柄保存发送到HTTP服务器的请求,并包含要作为请求一部分发送的所有RFC822 / MIME / HTTP头。
如果pwszVerb设置为“HEAD”,则Content-Length头将被忽略。
如果已经使用WinHttpSetStatusCallback安装了状态回调函数,则WINHTTP_CALLBACK_STATUS_HANDLE_CREATED通知指示WinHttpOpenRequest已创建请求句柄。
在主叫应用程序使用WinHttpOpenRequest返回的HINTERNET句柄完成后,必须使用WinHttpCloseHandle函数关闭。