我希望能够确定UniCommand不能使用UniObjects for Java完成的确切原因,以便告诉用户。我有以下代码,它们在理想的条件下按预期运行,但是如果command不是有效的命令,uniCommand.response()将返回一个空的String。我想知道为什么命令不能执行。我试着使用uniCommand.getSystemReturnCode(),但是如果命令没有成功完成,并且没有足够的信息,它总是返回-1。我该怎么找出到底出了什么问题?
UniCommand uniCommand = uniSession.command();
uniCommand.setCommand(command);
uniCommand.exec();
int status = uniCommand.status();
//int sysRet = uniCommand.getSystemReturnCode();
if (status == UniObjectsTokens.UVS_COMPLETE) {
output(uniCommand.response());
}一个例子:当我通过telnet在BLAH服务器本身上执行UniVerse时,我得到:
Verb "BLAH" is not in your VOC.当我执行LIST BLAH时,我得到:
RetrieVe: syntax error. Unexpected sentence without filename. Token was "".
Scanned command was LIST 'BLAH'我希望使用UniObjects for Java在我的程序中获得这些准确的错误消息。这有可能吗?
发布于 2013-11-14 16:06:06
我也遇到过同样的问题,这似乎是uniobjects库的一个限制。处理它的一种方法是将命令包装在子例程中。
SUBROUTINE RUN.COMMAND(COMMAND,RESPONSE)
EXECUTE COMMAND CAPTURING RESPONSE
END然后使用UniSubroutine对象调用它。
String command = "LIST BLAH";
UniSubroutine sub = uniSession.subroutine("RUN.COMMAND", 2);
sub.setArg(0, command);
sub.call();
UniDynArray response = new UniDynArray(sub.getArg(1));
for (int i = 0; i < response.dcount(); i++) {
String line = response.extract(i).toString();
System.out.println(line);
}https://stackoverflow.com/questions/19146112
复制相似问题