如何使用libcurl的摘要身份验证发布http请求

如何使用libcurl的摘要身份验证发布http请求,c,libcurl,digest,C,Libcurl,Digest,我正在尝试执行post请求,并尝试使用摘要身份验证。通过libcurl,我设置了以下选项: curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); curl_easy_setopt(curl_handle, CURLOPT_USERPWD, "username:password"); 在设置所有其他选项(post、url和所有内容)之前。服务器关闭了我的连接,我想没有摘要。我只是不知道如何自动获取摘要的挑战响应行为。

我正在尝试执行post请求,并尝试使用摘要身份验证。通过
libcurl
,我设置了以下选项:

curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);

curl_easy_setopt(curl_handle, CURLOPT_USERPWD, "username:password");
在设置所有其他选项(post、url和所有内容)之前。服务器关闭了我的连接,我想没有摘要。我只是不知道如何自动获取摘要的挑战响应行为。如果我将
HTTPAUTH
设置为
CURLAUTH\u BASIC
它对内容进行编码,我会使用VERBOSE选项看到包含
authorization=BASIC
的标题。没有标题的摘要


你知道我怎么做吗,或者你能给我举个例子吗?我真的到处都找遍了。

对于一个基本的
帖子
请求,你应该做:

curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:pwd");
curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST);
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
对于多部分
POST
(也称为
multipart/form data
):


专业提示:将
curl
命令行工具与
--libcurl request.c
一起使用:它将用于执行相应请求的选项列表输出到此c文件。

我尝试过,但它无法正常工作……我应该收到质询,但我没有收到任何东西,在您发送给我的代码之后,我是否还需要编写更多代码?我必须设置标题或类似的东西吗?那么服务器端应该有问题。当然,您必须设置
CURLOPT_URL
选项,否则这就是您所需要的。我确认它是有效的(例如看到这些)。我再次建议您使用
--libcurl out.c
选项在命令行上、在您自己的服务上执行相同的请求:它将输出您需要的所有内容。是的!现在它工作了!正如您所说,这是服务器的问题。我非常感谢你,我的朋友,祝你度过愉快的一天。
struct curl_httppost *post;
struct curl_httppost *postend;
/* setup your POST body with `curl_formadd(&post, &postend, ...)` */
curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:pwd");
curl_easy_setopt(hnd, CURLOPT_HTTPPOST, post);
curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST);
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");