使用 libcurl 执行 HTTP POST - 摘要式身份验证,使用 curl_easy_send\ curl_easy_recv
Posted
技术标签:
【中文标题】使用 libcurl 执行 HTTP POST - 摘要式身份验证,使用 curl_easy_send\\ curl_easy_recv【英文标题】:Perform HTTP POST with libcurl - digest authentication, using curl_easy_send\ curl_easy_recv使用 libcurl 执行 HTTP POST - 摘要式身份验证,使用 curl_easy_send\ curl_easy_recv 【发布时间】:2010-12-09 15:02:33 【问题描述】:我正在尝试编写一个简单的程序,它使用 libcurl 使用摘要身份验证执行 HTTP POST。
当我使用适当的curlopt_easy_setopt
调用与CURLOPT_POSTFIELDS
和CURLOPT_POSTFIELDSIZE
然后调用curl_easy_perform
来设置要发送的XML 缓冲区时,它工作正常。
但是,当我将 CURLOPT_CONNECT_ONLY
设置为 1 后尝试连接,然后使用 curl_easy_send
- 返回代码(用于发送调用)是 CURLE_UNSUPPORTED_PROTOCOL
。
(当然之前用户名、密码和digest认证方案都设置成功了)。
使用嗅探器,可以明显看出根本没有执行摘要协商。
如何仍然使用curl_easy_send
\ curl_easy_recv
和CURLOPT_CONNECT_ONLY
,但让libcurl 执行摘要协商?
提前致谢。
【问题讨论】:
【参考方案1】:嗯,这毕竟是不可能的。
curl_easy_send
和 curl_easy_recv
用于实现自定义协议。
因此,我认为正在发生的事情是 libcurl 将为 curl_easy_perform
执行的正常 HTTP 协议处理根本没有完成,因此没有可用的摘要\NTLM\GSS 协商。
希望对大家有所帮助。
【讨论】:
以上是关于使用 libcurl 执行 HTTP POST - 摘要式身份验证,使用 curl_easy_send\ curl_easy_recv的主要内容,如果未能解决你的问题,请参考以下文章
C/C++使用libcurl库发送http请求(get和post可以用于请求html信息,也可以请求xml和json等串)