【问题标题】:WinInet::InternetSetOption(...) always returns 0 and GetLastError() returns 12018WinInet::InternetSetOption(...) 总是返回 0 并且 GetLastError() 返回 12018
【发布时间】:2013-04-11 08:35:55
【问题描述】:

我正在尝试使用 InternetSetOption(...) 方法设置代理的用户名和密码。但是,它始终返回零,并且 Last error 设置为 12018。 下面是我的代码 sn-p。

#include "stdafx.h"
#include <Wininet.h>


int _tmain(int argc, _TCHAR* argv[])
{
    HINTERNET _session = ::InternetOpen(_T("TestProgram"),
                              INTERNET_OPEN_TYPE_PRECONFIG,
                              NULL, NULL, NULL);
    LPCTSTR proxyUserName = L"username";
    LPCTSTR proxyPassword = L"userpassword";
    BOOL b = ::InternetSetOption(_session,INTERNET_OPTION_PROXY_USERNAME ,(LPVOID)proxyUserName,wcslen(proxyUserName)+1 );
        printf(" InternetSetOption returns - %d\n",b);
        printf(" InternetSetOption GetLastError - %d\n",GetLastError());

        b = ::InternetSetOption(_session,INTERNET_OPTION_PROXY_PASSWORD,(LPVOID)proxyPassword,wcslen(proxyPassword) +1 );
        printf(" InternetSetOption returns - %d\n",b);
        printf(" InternetSetOption GetLastError - %d\n",GetLastError());

        getchar();
    return 0;
}

我尝试以管理员和非管理员权限执行上述程序,但没有运气。 欢迎任何帮助。

谢谢, 呸呸呸

【问题讨论】:

    标签: windows visual-c++ wininet


    【解决方案1】:

    您使用了不正确的HINTERNET 句柄。 来自Option Flags 文档:

    INTERNET_OPTION_PROXY_USERNAME 这个选项可以在句柄上设置 由 InternetConnect 或 HttpOpenRequest 返回。

    INTERNET_OPTION_PROXY_PASSWORD 这个选项可以在句柄上设置 由 InternetConnect 或 HttpOpenRequest 返回。

    因此,您必须使用InternetConnect() 或HttpOpenRequest()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多