Docusign通过ProcessBuilder检索

时间:2014-11-10 17:57:15

标签: c# docusignapi processbuilder

我试图通过命令行构建一个java进程来执行docusign检索产品。我已根据给定的属性文件编写了要执行的进程。

        buildRoot = isWindowsOs() ? "C:" + "\\Program Files (x86)\\DocuSign, Inc\\Retrieve 3.2" : "\\Program Files (x86)\\DocuSign, Inc\\Retrieve 3.2" ;

        String[] command = new String [2];

        command[0] = "\""+buildRoot+ "\\" + docuSignAppName+"\"";
        logger.info(command[0].toString());
        //ADDED FOR EXPLANATION - "C:\Program Files (x86)\DocuSign, Inc\Retrieve 3.2\DocuSignRetrieve.exe"
        command[1] = arguments;
        logger.info(command[1].toString());

        ProcessBuilder processBuilder = new ProcessBuilder(command);
        logger.info("ProcessBuilder starting directory" +processBuilder.directory());
        processBuilder.redirectErrorStream(true);
        p = processBuilder.start();

        InputStream is = p.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        stdout = new BufferedReader(isr);

一旦我传入了内置的参数字符串,执行的代码就像提供的样本一样,但总是会导致错误返回到屏幕"缺少" accountid"参数&#34 ;.

参数列表如下所示     / endpoint" Demo"     / userid" REMOVED"     / password" REMOVED"     / accountid" REMOVED"     / span" -1"     / spanfilter"已完成"     / statusfilter"已完成"     / fieldlog" FIELDS"     / nstyle" EnvelopeID"     / save" MergedPdfWithoutCert"     / dir" D:\ DocuSignStore"     / includeheaders" true"

任何帮助或帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

解决方案是在关于ProcessBuilder的常见问题的StackOverflow讨论中找到的。

我的问题是我希望通过更改完整路径中的put,我可以运行可执行文件。由于我现在不确定的原因,它没有按预期工作。解决方案是运行任何Windows操作系统上%PATH%上存在的CMD命令。

    String[] command = new String [2];

    command[0] = "\""+buildRoot+ "\\" + docuSignAppName+"\"";
    logger.info(command[0].toString());
    //ADDED FOR EXPLANATION - "C:\Program Files (x86)\DocuSign, Inc\Retrieve 3.2\DocuSignRetrieve.exe"
    command[1] = arguments;
    logger.info(command[1].toString());
    //This starts a new command prompt
    ProcessBuilder processBuilder = new ProcessBuilder("cmd","/c","DocusignRetreive.exe);
    //This sets the directory to run the command prompt from
    File newLoc = new File("C:/Program Files (x86)/DocuSign, Inc/Retrieve 3.2");
    processBuilder.directory(newLoc);
    logger.info("ProcessBuilder starting directory" +processBuilder.directory());
    processBuilder.redirectErrorStream(true);

    /*When the process builder starts the prompt looks like
     *C:\Program Files (x86)\DocuSign, Inc\Retrieve 3.2
     *Now DocusignRetrieve.exe is an executable in the directory to be run
     */
    p = processBuilder.start();