所以我有一个我想要执行的字符串,一个卷曲字符串...当它被执行时,它正在屠杀我的用户代理字符串......
这是我执行的字符串...
/usr/bin/curl -L --no-keepalive --max-time 30 --connect-timeout 30 --insecure --max-redirs 10 --stderr /var/folders/+j/+jqu+V1eEoSalBbXTff74U+++TI/-Tmp-/output7756019899402490058.tmp --cookie-jar /var/folders/+j/+jqu+V1eEoSalBbXTff74U+++TI/-Tmp-/cookies4551380191209065239.tmp --user-agent "1 2 3 4 5" --dump-header /var/folders/+j/+jqu+V1eEoSalBbXTff74U+++TI/-Tmp-/headers159122813500476027.tmp http://test.com
这是我用来执行它的代码
Process pr = null;
Runtime run = Runtime.getRuntime();
try {
pr = run.exec(cmdline.split(" "));
A ret = f.f(pr);
pr.waitFor();
return ret;
} catch (Exception ex) {
throw new RuntimeException("Executing " + cmdline, ex);
} finally {
try {
// close all those bloody streams
pr.getErrorStream().close();
pr.getInputStream().close();
pr.getOutputStream().close();
} catch (IOException ex) {
Log.get().exception(Log.Level.Error, "Closing stream: ", ex);
}
}
以下是用户代理混乱的apache日志...
192.168.1.105 - - [07/Feb/2012:20:59:38 -0500] "GET / HTTP/1.1" 200 6791 "-" "\"1"
apache中的预期结果应该显示完整的用户代理(在这种情况下为1 2 3 4 5)
192.168.1.105 - - [07/Feb/2012:20:59:38 -0500] "GET / HTTP/1.1" 200 6791 "-" "1 2 3 4 5"
答案 0 :(得分:3)
你在空格上分裂,“1 2 3 4 5”中有空格。
答案 1 :(得分:0)
我建议以不同的分隔方式传递它。我会使用分号(;)或任何非易失性分隔符。并以那种方式拆分字符串。这里需要记住的是,你不关心只有你愿意执行的内容才会传递给你的程序。因此,您的cmdLine变量应如下所示:
--user-agent; "1 2 3 4 5"; --dump-header;
根据需要使用String.trim()。