在我的XPages应用程序中,我必须调用curl命令
代码很简单:
public static InputStream executeCurlCommand(String finalCurlCommand) throws IOException
{
return Runtime.getRuntime().exec(finalCurlCommand).getInputStream();
}
但是,该命令似乎根本没有执行。
当我执行以下内容(在 Linux 终端中(时:
curl -k -i -X GET https://someHost/fws/api/esia/login?redirectUrl=https://redirectHost/sed/gecho/2019/gecho_apps_2019.nsf/Nav2.xsp
我得到输出。
但是每当我用 Java 执行它时,都不起作用。getInputStream()
为空。
同时,如果我在本地Windows机器上执行此代码,一切都很好。从cmd执行的命令也是如此。
但是在XPages中没有例外,没有错误,什么都没有。
有没有办法调试它?
UPD
如果我将命令更改为像ls -la
这样简单的东西,一切正常:x
好吧,伙计们,我想通了。问题是我将完整的命令传递给了 shell。它在UNUX中不起作用。
所以
你永远不应该使用
public static InputStream executeCurlCommand(String finalCurlCommand) throws IOException
{
return Runtime.getRuntime().exec(finalCurlCommand).getInputStream();
}
在 UNIX 系统中。改用 ProcessBuilder
例如:
ProcessBuilder pb = new ProcessBuilder(
"curl",
"-k",
"-i",
"-X",
"GET",
"http://host.com");
pb.redirectErrorStream(true);
Process p = pb.start();
InputStream is = p.getInputStream();