帮助Curl ERROR BUFFER

时间:2010-12-07 08:25:20

标签: 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&lt; string&gt;包含其他错误字符串......

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

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

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

1 个答案:

答案 0 :(得分:2)

您不能使用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,它没有返回传递给它的相同字节数。