c++ - 集成 Windows 身份验证 Wininet

标签 c++ windows winapi wininet

您好专家 我需要使用 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());

最佳答案

尝试使用INTERNET_OPEN_TYPE_PRECONFIG在您的进程中初始化Wininet:

InternetOpen(clientName, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

关于c++ - 集成 Windows 身份验证 Wininet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5824174/

相关文章:

c++ - 我的代码输出重复

c++ - 使用 Windows API 查找路径类型

c# - 从 Windows 窗体获取数据到 C# 程序

windows - 批处理文件中延迟扩展的示例

windows - 有什么方法可以修复 pgpass.conf 在 Windows 上正常工作吗?

c++ - 电源按钮和盖子 sleep 定制

c++ - 从另一个线程最大化/最小化窗口

c++ - Qt 4.8.2 与 GCC 4.7.0.1 不断崩溃

C++ 函数对象参数

c++ - 尝试使用二维数组