描述
WinHttpSetCredentials功能将所需的授权凭据传递给服务器。
C / C ++语法
BOOL WinHttpSetCredentials( HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams ); |
PowerBASIC 语法
FUNCTION WinHttpSetCredentials ( _ BYVAL hRequest AS DWORD, _ BYVAL AuthTargets AS DWORD, _ BYVAL AuthScheme AS DWORD, _ BYREF pwszUserName AS WSTRINGZ, _ BYREF pwszPassword AS WSTRINGZ, _ BYREF pAuthParams AS WSTRINGZ _ ) AS LONG |
参数
hRequest
[in]HINTERNET请求句柄返回WinHttpOpenRequest.
AuthTargets
[in]一个无符号整数,指定包含身份验证目标的标志。可以是下表中的值之一。
WINHTTP_AUTH_TARGET_SERVER
证书被传递给服务器。
WINHTTP_AUTH_TARGET_PROXY
证书被传递给代理。
AuthScheme
[in]一个无符号整数,指定包含身份验证方案的标志。必须是从WinHttpQueryAuthSchemes返回的支持的认证方案之一。下表列出了可能的值。
WINHTTP_AUTH_SCHEME_BASIC
使用基本认证。
WINHTTP_AUTH_SCHEME_NTLM
使用NTLM身份验证。
WINHTTP_AUTH_SCHEME_PASSPORT
使用护照验证。
WINHTTP_AUTH_SCHEME_DIGEST
使用摘要验证。
WINHTTP_AUTH_SCHEME_NEGOTIATE
在NTLM和Kerberos身份验证之间进行选择。
pwszUserName
[in]指向包含有效用户名的以null结尾的Unicode字符串的指针。
pwszPassword
[in]指向包含有效密码的以null结尾的Unicode字符串的指针。密码可以为空。
pAuthParams
[in]保留。必须为NULL。
返回值
如果成功,返回一个有效的会话句柄,否则返回NULL。要检索扩展错误信息,请调用GetLastError.返回的错误代码有:
错误代码 |
描述 |
ERROR_WINHTTP_INCORRECT_HANDLE_STATE |
所请求的操作不能完成,因为提供的句柄不在正确的状态。 |
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE |
提供的手柄类型对于此操作是不正确的。 |
ERROR_WINHTTP_INTERNAL_ERROR |
发生内部错误。 |
ERROR_NOT_ENOUGH_MEMORY |
没有足够的内存来完成请求的操作。(Windows错误代码) |
备注
即使在异步模式下使用WinHTTP(即在WinHttpOpen中设置了WINHTTP_FLAG_ASYNC)时,此函数也可以同步运行。返回值表示成功或失败。要获取扩展错误信息,请调用GetLastError.
由WinHttpSetCredentials设置的凭据仅用于单个请求; WinHTTP不会缓存这些凭据以供后续请求使用。因此,应用程序必须写入,以便能够应对多重挑战。如果重新使用经过身份验证的连接,则后续请求不会受到质疑,但您的代码应该能够在任何时候响应挑战。
有关说明使用WinHttpSetCredentials的示例代码,请参阅WinHTTP认证.
注意使用Passport身份验证和响应407状态代码时,WinHTTP应用程序必须使用WinHttpSetOption提供代理凭据而不是WinHttpSetCredentials.只有使用护照身份验证时才是这样。在所有其他情况下,请使用WinHttpSetCredentials,因为WinHttpSetOption的安全性较低。