Curl API和命令行选项,用于使用用户名和;启用密码的https url

Curl API和命令行选项,用于使用用户名和;启用密码的https url,c,linux,curl,C,Linux,Curl,我试图在linux(Fedora 14 curl 7.30.0(i686 pc linux gnu)libcurl/7.30.0 OpenSSL/1.0.0 zlib/1.2.5)平台上使用基于C的curl API和curl命令行参数对带有“用户名和密码”的HTTPS URL进行身份验证 当我在Mozilla web浏览器中使用URL时,它会提示输入用户名和密码一次——在我按下“OK”后,我就可以获取内容了。但是如果我按下取消按钮,就会显示“用户取消登录”。错误(屏幕截图)已附加 如何使用cur

我试图在linux(
Fedora 14 curl 7.30.0(i686 pc linux gnu)libcurl/7.30.0 OpenSSL/1.0.0 zlib/1.2.5
)平台上使用基于C的curl API和curl命令行参数对带有“用户名和密码”的HTTPS URL进行身份验证

当我在Mozilla web浏览器中使用URL时,它会提示输入用户名和密码一次——在我按下“OK”后,我就可以获取内容了。但是如果我按下取消按钮,就会显示“用户取消登录”。错误(屏幕截图)已附加

如何使用curlapi和命令行参数进行身份验证并避免“登录被用户取消”异常

curl -X POST http://<auth url> --user "<username>:<password>" -c ~/cookies
下面是我尝试过的选项,但错误仍然是“用户取消登录”

命令行:

curl -k --user "xxxxx:xxxxx" "https://fsgpos.opensoft.co.bw/ipa/statement/get/LN001234"
旋度API:

curl_easy_setopt(curl, CURLOPT_USERNAME,"xxxxxxxx");

curl_easy_setopt(curl, CURLOPT_PASSWORD,"xxxxxxxx");
如何使用有效的curl选项和API参数处理此异常?

curl-X POST http://--user:'-c~/cookies
curl -X POST http://<auth url> --user "<username>:<password>" -c ~/cookies
  • -c可选地将登录存储在cookies中

您是否提供客户端证书、客户端密钥和根证书

curl_easy_setopt(pcurlHandle, CURLOPT_SSLCERT, clientcertfile);

curl_easy_setopt(pcurlHandle, CURLOPT_SSLKEY, clientkeyfile);

curl_easy_setopt(pcurlHandle, CURLOPT_CAINFO, rootcertfile);

您的代码将有助于调试。

在curl中使用
UserAgent
字符串。与浏览器相比,这是您唯一缺少的东西

    -A "Mozilla 6.0"

另外,还要添加
-v
参数,并向我们展示curl的调试消息。

为了了解发生了什么,您可能需要研究此http基本身份验证的实际工作方式。了解它,使用嗅探器或调试代理来实际查看通信。了解事物而不是盲目地听从建议对于学习新事物、分析和发现错误非常重要,要真正能够编写代码。是的,终于找到了。谢谢您必须了解如何在这种情况下设置身份验证+这将有助于检查web服务器日志以获取更多信息。通过在命令行中添加--digest选项,问题得到解决,API是curl\u easy\u setopt(curl,CURLOPT\u HTTPAUTH,CURLAUTH\u digest);我们必须为身份验证方法指定curl。现在它可以正常工作了…谢谢..我已经发布了日志,发现它是自签名证书。还显示401未经授权的错误和证书过期错误。@user1495372您没有添加带有curl的“Mozilla 6.0”。日志上是这样写的。请加上你的卷发。另外,不要编辑我的帖子。请编辑您的问题:-)我已尝试使用选项[curl-k”“--user“xxxxxxx:xxxxxxx”-A“Mozilla 6.0”]但仍然出现相同的错误。我不这么认为这个SSL错误。这只是因为用户名和密码。。。!有什么线索吗?@user1495372您在命令中的
--user
之前使用了分号(
)。请删除该选项,然后重试!好的…这是复制粘贴错误…通过在命令行中添加--digest选项解决了问题,API是curl\u easy\u setopt(curl,CURLOPT\u HTTPAUTH,CURLAUTH\u digest);我们必须为身份验证方法指定curl。现在它可以正常工作了…谢谢…通过在命令行中添加--digest选项解决了这个问题,API是curl\u easy\u setopt(curl,CURLOPT\u HTTPAUTH,CURLAUTH\u digest);我们必须为身份验证方法指定curl。现在它可以正常工作了…谢谢。。