勇芳软件工作室.汉化:  WinHTTP Reference > WinHTTP Functions >

WinHttpSetCredentials

Previous pageReturn to chapter overviewNext page

描述

 

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的安全性较低。