努力得到一个包含变量的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;
我很感激你。
3条答案
按热度按时间kadbb4591#
如果您是从java运行代码,为什么必须使用curl?http客户机上有足够多的第三方库。这里有一些选项:apachehttp客户端,ok http客户端。我编写了自己的http客户机,它没有涵盖所有的可能性,但是使用起来更简单。它在mgntutils开源库中提供。你也可以试试。它可以作为maven工件或github(带有源代码和javadoc)提供。这里是到httpclient javadoc的链接。
不管是哪种方式,使用任何http客户机甚至httpurlconnection java类都将更容易获得所需内容,然后从java调用curl
jljoyd4f2#
明确地传递它们。例如:
我不确定,但你可能需要对
group
参数URLEncoder.encode("CPM CPs&optionalItem=CP&optionalItemInstance=1&action=Value 0", StandardCharsets.UTF_8)
.dojqjjoe3#
唯一的问题是值0“和url之间缺少空格