c++ - 帮助解决 Curl ERRORBUFFER

标签 c++ curl

我有一个使用 curl 的程序。它的一部分看起来像这样..

char* Error = NULL;
Error = (char*)malloc(1024);
memset(Error, 0, 1024); 
..............
    curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, Error);
    curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
    if(CURLE_OK != curl_easy_perform( curl)){
        Error[1023] = '\0';
//      cout << "cURL returned: " <<  Error << endl;
    }
    curl_easy_cleanup(curl);
    free(Error);

如您所见,我已经使用 char * 作为错误缓冲区...如何使用字符串而不是 char *,因为我已经有一个包含其他错误字符串的 std::list ...

即使没有错误,cout 也会将其打印到屏幕上:

cURL returned: Failed writing body (442456 != 998)

避免这种情况的 if 条件应该是什么?

最佳答案

您不能使用 std::string 来接收错误,因为它没有可写缓冲区。

如果您想使用 STL 而不必处理数组内存,则可以使用 std::vector。

const size_t errBufSize = 1024;
std::vector<char> errBuf( errBufSize );
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, &errBuf[0]); 

您实际的错误可能来自代码的其余部分,例如,如果您向它传递一个错误缓冲区,您可能还必须向它传递缓冲区大小。

我认为“写入正文失败”是因为 Curl_write_callback 没有返回传递给它的相同字节数。

关于c++ - 帮助解决 Curl ERRORBUFFER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4374644/

相关文章:

c++ - 在 Qt 中从对象的析构函数发出信号可以吗?

c++ - 使用 C++/C 的安全网络编程

php - 无法使用 cURL 设置私钥文件

javascript - curl :如何修复 "Please turn JavaScript on and reload the page"

php - 通过 cURL 获取 RSS,在浏览器中正常,但在终端中出现 404 错误

node.js - 乱码而不是 html 响应作为 node.request 中的正文

c++ - 为什么winsock没有64位API?

c++ - std::map 不接受我的运算符<

c++ - 如果地址-B 访问之后往往是地址-C 访问,缓存可以识别吗?

javascript - 将 curl 转换为 Javascript ajax 代码