【发布时间】:2011-04-28 19:53:58
【问题描述】:
各位专家 我需要使用 wininet API 从 C++ 应用程序发送一个 http 请求。 用户位于配置为使用集成 Windows 身份验证的 ISA 代理服务器后面。 当我收到错误 407(需要代理身份验证)时,我使用 InternetErrorDlg 向用户询问凭据。这不是一个理想的解决方案,因为 IE 能够透明地使用当前用户的凭据。有没有办法做到这一点?
请求示例代码
hRequest = HttpOpenRequest (
hConnect,
"POST",
query.c_str(),
HTTP_VERSION,
NULL,
cAcceptTypes,
INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE| INTERNET_FLAG_KEEP_CONNECTION,
0);
bRet = HttpSendRequest(
hRequest,
NULL,
0,
(LPVOID)dataXml.c_str(),
(DWORD)dataXml.length());
bRet = HttpQueryInfo(
hRequest,
HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_STATUS_CODE,
&dwStatus,
&dwSize,
NULL);
if (dwStatus == HTTP_STATUS_PROXY_AUTH_REQ)
{
ProxyAuthenticate( hRequest ); // Here I call InternetErrorDlg
bRet = HttpSendRequest(
hRequest,
NULL,
0,
(LPVOID)dataXml.c_str(),
(DWORD)dataXml.length());
}
【问题讨论】:
-
您能否展示一些示例代码,WinInet 通常会使用本地凭据自动处理身份验证,除非您已使用 InternetSetOption 明确禁用身份验证。
标签: c++ windows winapi wininet