You need to enable JavaScript to run this app. CURL下载ASX CSV数据与浏览器直接下载结果不一致问题排查
优惠活动
大模型
产品
解决方案
定价
更多

CURL下载ASX CSV数据与浏览器直接下载结果不一致问题排查

问题原因及解决方案
  • 核心错误:你配置完CURL参数后没有调用curl_easy_perform(m_MyHandle)执行实际网络请求,直接打印了还未赋值的空字符串,甚至可能读取到内存脏数据,这是内容不一致的最主要原因。
  • 次要问题:该接口默认返回gzip压缩的响应内容,如果没有开启CURL自动解压功能,拿到的压缩二进制内容被当成纯文本解析也会出现乱码。
  • 优化点:原代码没有做请求错误判断,也没有释放CURL相关资源,存在内存泄漏风险。

修复后的完整可运行代码如下:

#include <string>
#include <cstdio>
#include "curl/curl.h"

size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main()
{
    CURL* m_MyHandle;
    CURLcode m_Result;

    curl_global_init(CURL_GLOBAL_ALL);
    m_MyHandle = curl_easy_init();
    if(m_MyHandle) {
        // 配置和Chrome一致的UA,避免服务端返回差异化内容
        curl_easy_setopt(m_MyHandle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36");
        curl_easy_setopt(m_MyHandle, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(m_MyHandle, CURLOPT_URL, "https://asx.api.markitdigital.com/asx-research/1.0/companies/directory/file?access_token=83ff96335c2d45a094df02a206a39ff4");
        // 开启自动解压压缩响应,和浏览器行为对齐
        curl_easy_setopt(m_MyHandle, CURLOPT_ACCEPT_ENCODING, "gzip, deflate, br");
        
        std::string codeNamesBuff;
        curl_easy_setopt(m_MyHandle, CURLOPT_WRITEDATA, &codeNamesBuff);
        
        // 执行实际网络请求,这是原代码遗漏的关键步骤
        m_Result = curl_easy_perform(m_MyHandle);
        
        if(m_Result == CURLE_OK) {
            printf("%s", codeNamesBuff.c_str());
        } else {
            fprintf(stderr, "请求失败: %s\n", curl_easy_strerror(m_Result));
        }
        
        // 释放资源
        curl_easy_cleanup(m_MyHandle);
    }
    curl_global_cleanup();
    return 0;
}

运行修复后的代码,输出内容和浏览器下载的CSV完全一致,第5、6行代码为1ST和29M,不会再出现内容异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 19:30:02