curl字符串中的变量(java)

2wnc66cl  于 2021-06-29  发布在  Java
关注(0)|答案(3)|浏览(343)

努力得到一个包含变量的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(url)
urlparameters(包含“0”或“1”并替换值)
我所有的atempts都失败了,即使只使用targeturl,要么语法错误,要么curl不执行。

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

我很感激你。

kadbb459

kadbb4591#

如果您是从java运行代码,为什么必须使用curl?http客户机上有足够多的第三方库。这里有一些选项:apachehttp客户端,ok http客户端。我编写了自己的http客户机,它没有涵盖所有的可能性,但是使用起来更简单。它在mgntutils开源库中提供。你也可以试试。它可以作为maven工件或github(带有源代码和javadoc)提供。这里是到httpclient javadoc的链接。
不管是哪种方式,使用任何http客户机甚至httpurlconnection java类都将更容易获得所需内容,然后从java调用curl

jljoyd4f

jljoyd4f2#

明确地传递它们。例如:

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());

我不确定,但你可能需要对 group 参数 URLEncoder.encode("CPM CPs&optionalItem=CP&optionalItemInstance=1&action=Value 0", StandardCharsets.UTF_8) .

dojqjjoe

dojqjjoe3#

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

相关问题