gpt4 book ai didi

400 错误时的 libcurl HTTP 响应消息

转载 作者:行者123 更新时间:2023-12-04 15:59:04 25 4
gpt4 key购买 nike

我在 C 代码中通过 libcurl 向 POST 请求发送了错误的 URL。服务器发回 400 以及包含有关请求被拒绝原因的详细信息的响应。在 libcurl 中我可以看到错误代码:

res CURLcode    CURLE_HTTP_RETURNED_ERROR

我还可以通过以下方式查看协议(protocol)错误:

char errbuf[CURL_ERROR_SIZE];
errbuf[0] = 0;
curl_easy_setopt(vc->curl, CURLOPT_ERRORBUFFER, errbuf);
/* Perform the request, resCode will get the return code */
CURLcode resCode = curl_easy_perform(vc->curl);


errbuf char [256] "The requested URL returned error: 400 Bad Request"

我真正想访问的是响应的正文。服务器将详细的错误信息放在那里,说明它拒绝请求的原因:

[
{
"code": "io.myorg.bad.request",
"message": "Unrecognized query parameter 'count' with value: true.",
"params": []
}
]

我已经通过以下方式设置了读写回调函数:

/* ask curl to let us know if we get a 400 or higher */
curl_easy_setopt(vc->curl, CURLOPT_FAILONERROR, 1L);

curl_easy_setopt(vc->curl, CURLOPT_HTTPHEADER, vc->slist);

/* we want to use our own read/write function */
curl_easy_setopt(vc->curl, CURLOPT_READFUNCTION, read_callback);
curl_easy_setopt(vc->curl, CURLOPT_WRITEFUNCTION, write_callback);

/* pointer to pass to our callback functions */
curl_easy_setopt(vc->curl, CURLOPT_READDATA, vc);
curl_easy_setopt(vc->curl, CURLOPT_WRITEDATA, vc);

在这种情况下它们不会被调用。我如何获取响应消息中的 json?

最佳答案

启用 CURLOPT_FAILONERROR 选项可防止在检测到错误时调用写入回调。

关于400 错误时的 libcurl HTTP 响应消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com