【问题标题】:Java ProcessBuilder: curl: (1) Protocol "'https" not supported or disabled in libcurlJava ProcessBuilder:curl:(1)libcurl中不支持或禁用协议“'https”
【发布时间】:2019-03-28 12:25:02
【问题描述】:

我正在尝试将 Java 中的 cUrl 命令调用到 https url。

我只是使用以下内容:

ProcessBuilder pb = new ProcessBuilder("curl", "-X", "GET", "https://...");
Process p = pb.start();

errorStream 打印以下内容:

curl: (1) Protocol "'https" not supported or disabled in libcurl

但是如果我在终端中执行 cUrl 命令,它会毫无问题地回答。

我还尝试了以下方法:

pb = new ProcessBuilder("curl", "-V");

返回:

curl 7.54.0 (x86_64-apple-darwin16.0) libcurl/7.54.0 SecureTransport zlib/1.2.8
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets 

我不明白为什么该命令在终端中有效,但在 Java 上下文中无效。

【问题讨论】:

  • 试试ProcessBuilder pb = new ProcessBuilder("/usr/bin/curl", "-X", "GET", "https://www.google.com");,我在这里的Mac 上有相同的curl 版本,它工作正常。也许您的系统上安装了两个不同的 curl。
  • 感谢您的建议。 “curl”和“/usr/bin/curl”的结果是一样的,但我找到了原因:我的url在'符号内!

标签: java curl https libcurl


【解决方案1】:

我找到了原因。

我注意到我的原始命令在 url 参数中有顶点,如下所示:

pb = new ProcessBuilder("curl", "-X", "GET", "'https://www.google.com'");

顶点导致上述错误。

解决方案是删除每个参数中的任何顶点,并且效果很好。

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 2019-08-06
    • 2012-03-24
    • 2017-01-10
    • 2018-12-30
    • 2017-09-14
    • 2020-01-22
    • 2012-09-12
    • 2017-09-08
    相关资源
    最近更新 更多