You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Afxinet开发页面下载程序时,CInternetSession::OpenURL抛出错误1168

解决Afxinet调用OpenURL时抛出错误代码1168的问题

错误代码1168对应Win32的ERROR_NOT_FOUND,本质是请求的资源无法被定位到。结合你的代码场景,核心原因和修复方案如下:

  • 目标站点已切换至HTTPS协议
    当前http://ip.chacha.cn大概率强制跳转至HTTPS,继续用HTTP请求会直接触发资源找不到的错误。修改URL为L"https://ip.chacha.cn",同时调整CInternetSession初始化参数以支持HTTPS:

    CInternetSession session(L"Client", 1, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_SECURE);
    

    另外确保项目链接时包含wininet.lib和secur32.lib两个依赖库。

  • 禁止强制转换CHttpFile*,先做类型校验
    session.OpenURL返回的CInternetFile子类不一定是CHttpFile,强制转换会引发未定义行为,正确做法是先判断类型:

    CInternetFile* pFile = session.OpenURL(url);
    if (!pFile) {
        DWORD dwError = GetLastError();
        // 这里添加错误处理逻辑
        return;
    }
    CHttpFile* pHtmlFile = dynamic_cast<CHttpFile*>(pFile);
    if (!pHtmlFile) {
        pFile->Close();
        delete pFile;
        return;
    }
    
  • 处理HTTP重定向场景
    即使保留HTTP协议,站点可能返回3xx重定向响应,OpenURL默认不自动处理,可添加参数强制刷新并跳过缓存:

    CInternetFile* pFile = session.OpenURL(url, 1, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE);
    
  • 修复字符编码转换问题
    你代码中用sprintf处理宽字符CString会导致乱码,改用多字节字符串转换:

    CStringA dataA(data);
    strcpy(ipline, dataA.GetString());
    

修改后的完整示例代码

CInternetSession session(L"Client", 1, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_SECURE);
wchar_t* url = L"https://ip.chacha.cn";
CInternetFile* pFile = session.OpenURL(url);

if (!pFile) {
    DWORD dwError = GetLastError();
    // 错误处理,比如输出错误码
    return;
}

CHttpFile* pHtmlFile = dynamic_cast<CHttpFile*>(pFile);
if (!pHtmlFile) {
    pFile->Close();
    delete pFile;
    return;
}

DWORD dwStatusCode;
pHtmlFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode == HTTP_STATUS_OK) {
    CString data;
    DWORD count = 0;
    char ipline[500] = { 0 };
    
    while (pHtmlFile->ReadString(data)) {
        count++;
        if (count == 96) {
            CStringA dataA(data);
            strcpy(ipline, dataA.GetString());
            IPv4_GET(ipline, strlen(ipline), ip);
            break;
        }
    }
}

// 记得释放资源
pHtmlFile->Close();
delete pHtmlFile;

内容的提问来源于stack exchange,提问作者Emeyedn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:06:33