我能够获得这样的HTTP响应代码:
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &ResponseCode);
但是如何获得响应错误文本?我认为CURLOPT_ERRORBUFFER可以帮助我:
char error_buf[CURL_ERROR_SIZE];
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buf);
但即使ResponseCode = 500并且请求状态文本返回,它似乎也是空的(我确定这是因为JQuery ajax请求显示它)。那怎么做呢?
答案 0 :(得分:0)
解决了它:
curl_easy_setopt(curl, CURLOPT_FAILONERROR, true); //<= this is important, but not obvious
char error_buf[CURL_ERROR_SIZE];
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buf);
事实证明,尽管HTTP响应代码500 CURLcode是CURLE_OK - 这是默认行为,这就是为什么error_buf中没有错误消息。 CURLOPT_FAILONERROR强制Curl将所有响应代码&gt; = 300转换为错误。
答案 1 :(得分:0)
curl_easy_perform
的返回值可以传递给curl_easy_strerror
以获取错误的文本表示。它可能不是您想要的“响应错误”,但有助于了解请求以500之类的代码结束的原因。