none
HttpQueryInfo 不返回正确的 HTTP 状态码 RRS feed

  • 问题

  • #define WINVER _WIN32_WINNT_WINXP
    #define _WIN32_WINNT WINVER
    
    HINTERNET hInet=InternetOpen(TEXT("USERAGENT"), INTERNET_OPEN_TYPE_PRECONFIG, nullptr, nullptr, 0);
    HINTERNET hHttp=InternetOpenUrl(hInet, TEXT("http://www.website.com/"), TEXT("Connection: close\r\n"), -1, INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_NO_COOKIES|INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_RELOAD, 0);
    BYTE ab[1024];
    DWORD dwIndex=0;
    HttpQueryInfo(hHttp, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, ab, 1024, &dwIndex);
    int iStatusCode=*reinterpret_cast<int*>(ab);

    在 Win10 上使用 VS2017 的 XP 工具集编译(项目平台 x86,字符集 Unicode),在 XPSP3 及 Win8.1 上取得的 HTTP 状态码为 0,然而用 HTTP_QUERY_RAW_HEADERS_CRLF 取得的第一行确实是 HTTP/1.1 200 OK。在 Win10 上能正确取得状态码 200。求解。

    (PS:没有 Windows SDK 开发论坛板块?)


    2017年7月25日 11:36

全部回复

  • 可以用 http master,http watch等工具,或是chrome,ie内置的开发工具试下,与IIS交互,

    看是否能返回正确的HTTP 状态码,还是被程序做了封装处理


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年7月27日 0:19
  • 可以用 http master,http watch等工具,或是chrome,ie内置的开发工具试下,与IIS交互,

    看是否能返回正确的HTTP 状态码,还是被程序做了封装处理


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    IE F12 有状态码,telnet open www.website.com 80 也返回 200,只有 HttpQueryInfo 不能获取。
    2017年7月27日 0:48