【发布时间】:2016-10-26 12:56:06
【问题描述】:
我有一个 CURL 命令需要在 JSP 文件中使用 Runtime 方法运行
int cnt=10;
String strCount="count"+cnt+"";
String msg= "{'text':'"+strCount+"'}";
String cmd = "curl -X POST -H 'Content-type: application/json' --data "+ msg +" https://hooks.slack.com/services/#####/###/###";
Runtime.getRuntime().exec(cmd);
效果很好,但是当我将strCount 更改为:
String strCount="Count is "+cnt+"";
它不再起作用了。很明显,Count is 之间的空间不再起作用了。
【问题讨论】:
-
您必须使用
exec(String[])方法并单独传递每个参数。 -
@MarkoTopolnik 是 java 方面的新手,请问您能更了解一下吗?
-
rt.exec("curl", "-X", "POST", "-H", ...) -
请注意,您的 curl 方法可能有效,但老实说,如果这获取的数据可能来自任何不受您控制的用户或消息,我会三思而后行,这并不难利用将原始用户输入传递给 exec 调用的程序。
-
您的问题还在于该程序无法知道文本中的空格是文本中的空格还是要使用的单独参数,您可以尝试引用该参数, 但我认为 Marko 上面的回答比引用它要好得多。