代码之家  ›  专栏  ›  技术社区  ›  Petr Javorik yours friendly

C++CurLyEasyPyFror()将新行插入到响应中

  •  1
  • Petr Javorik yours friendly  · 技术社区  · 8 年前

    我使用以下代码片段从远程RESTAPI获取43182个字符长的JSON:

    字符串结果
    
    curl_easy_setopt(curlget_uuu,curlopt_timeout,curl_timeout);
    c url_easy_setopt(curlget_uu,curlopt_url,url.c_str());
    curl_easy_setopt(curlget_uuu,curlopt_verbose,curl_debug_verbose);
    curl_easy_setopt(curlget_uu、curlopt_writedata和result_u);
    curl_easy_setopt(curlget_uu,curlopt_writefunction,writecallback);
    
    静态大小写回调(void*响应,
    尺寸
    大小(N)
    void*userp)无例外
    {
    (static_cast<string*>(userp))->附加(static_cast<char*>(response));
    返回大小*nmemb;
    };
    
    curlstatuscode_uu=卷曲\轻松执行(curlget_u);
    

    我在result>中得到的是完整的json,但在字符31954之后有换行符:

    如果我在浏览器或命令行curl中获取相同的JSON,就没有换行符。如何解决“任意”长JSON或其他一般响应的问题?

    我进去的东西result_是完整的JSON,但在字符31954之后有换行符:

    newline in JSON

    如果我在浏览器或命令行curl中获取相同的JSON,就没有换行符。如何解决“任意”长JSON或其他一般响应的问题?

    1 回复  |  直到 8 年前
        1
  •  2
  •   taskinoor    8 年前

    从卷曲 document 写入回调的:

    传递给此函数的数据不会被零终止!

    这个 response 在里面 WriteCallback 不一定以空结尾。所以打电话来 append 把它投射到 char* 将调用未定义的行为。你也得把数据量传进去 追加 .

    (static_cast<string*>(userp))->append(static_cast<char*>(response), size * nmemb)

    推荐文章