【问题标题】:variables inside curl string (Java)curl字符串中的变量(Java)
【发布时间】:2020-12-29 08:41:01
【问题描述】:

努力获取包含要工作的变量的 cURL 字符串。

这行得通-

String command = "Curl --digest -u admin:PASSWORD -X POST -d \"group=CPM CPs&optionalItem=CP&optionalItemInstance=1&action=Value 0\" http://192.168.150.219/action/status";

Process process = Runtime.getRuntime().exec(command);
    

然后我有两个变量,我试图插入/替换原始字符串内容 -

targetURL(网址)

urlParameters(包含“0”或“1”并替换Value)

我的所有尝试都失败了,即使只使用了 targetURL,也可能是语法错误或 cURL 没有执行。

String command = "Curl --digest -u admin:PASSWORD -X POST -d \"group=CPM CPs&optionalItem=CP&optionalItemInstance=1&action=Value 1\"" +targetURL;

想法表示赞赏。

【问题讨论】:

  • 您的所有三个示例都有编译错误。请用您实际尝试过的内容以及您遇到的问题更新您的问题。
  • 用最后一次(50 次尝试)更新,但什么都不做
  • 假设 targetURL 为“192.168.150.219/action/status”,您能否看到该字符串的最终值与您在问题开头输入的工作字符串有何不同?
  • 我可以确定会有一个“额外的””,但我不知道如何解决这个问题。

标签: java curl


【解决方案1】:

如果您从 Java 运行代码,为什么必须使用 curl? HTTP 客户端有足够多的第三方库。以下是一些选项:Apache HTTP clientOK HTTP client。我编写了自己的 HTTP 客户端,它没有涵盖所有可能性,但使用起来更简单。它在 MgntUtils 开源库中可用。欢迎您也尝试一下。它以Maven artifactsGithub 的形式提供(带有源代码和Javadoc)。这是指向HttpClient Javadoc 的链接。
无论哪种方式,使用任何 HTTP 客户端甚至 HttpURLConnection java 类都会更容易获得所需的内容,然后从 java 调用 curl

【讨论】:

  • 因为试图让摘要身份验证工作(主要作为“非开发人员”)让我害怕,尤其是在尝试了 3 天之后。这也是 JDK 6。我所要求的只是有人帮助我处理语法。
【解决方案2】:

明确地传递它们。例如:

        Process process = new ProcessBuilder("curl", "--digest", "-u", "admin:PASSWORD", "-X", "POST", "-d", "group=CPM CPs&optionalItem=CP&optionalItemInstance=1&action=Value 0", "http://192.168.150.219/action/status")
                .redirectErrorStream(true).start();
        InputStream is = process.getInputStream();
        List<String> lines = IOUtils.readLines(is, Charset.defaultCharset());

我不确定,但您可能必须使用 URLEncoder.encode("CPM CPs&amp;optionalItem=CP&amp;optionalItemInstance=1&amp;action=Value 0", StandardCharsets.UTF_8)group 参数进行编码。

【讨论】:

  • JDK6,没有 ProcessBuilder
  • @Ralph: java.lang.ProcessBuilder in javase 6 "Since: 1.5" 我可以确认我在 Java (1.)5 和 6、12 年前成功地使用它编写了程序。
  • 谢谢,虽然我在尝试使用 ProcessBuilder 时遇到错误,可能是因为我使用的是旧版本的 Netbeans。我的“代码”目前正在工作(并且不必使用 50 行左右的脚本来整理摘要身份验证)。不过感谢您的意见。
【解决方案3】:

唯一的问题是值 0" 和 url 之间缺少空格

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 2017-10-11
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多