java - 如何使用httpclient 4.3.6调用DCTM 7.1 REST API?

标签 java rest apache-httpclient-4.x documentum

我希望使用 Documentum 存储库的 REST API 与其进行交互。我想使用 http-client 4.3 jar 来执行此交互。

我希望有人能提供一个示例,帮助我指明如何与 DCTM 交互的正确方向。

我无法找到清晰且简单的示例来说明如何执行此操作。

谢谢

最佳答案

我知道现在回答这个问题有点晚了。但我想回答以帮助那些仍然需要代码来向其余 api 发出请求的人。以下是向其余 api 发送 post 请求以启动工作流程的完整示例。

对于其他需求,您可以查看 EMC 提供的 Documentum xCP Rest Services 文档:https://support.emc.com/docu52500_Documentum-xCP-REST-Services-2.1-Development-Guide.pdf?language=en_US&request=akamai并与此示例进行比较,根据需要进行更改。

更新:

此外,如果您不使用 xcp,这里是没有它的 Rest api 的文档 emc.com/collateral/TechnicalDocument/docu57895.pdf

您也可以在这里查看我的答案 How can I use REST to copy an object in Documentum 7.x用于从其余 api 获取对象数据和内容(不带 xcp)

    String strResponse = "";

    String process_id = "system_name of the process you want to start";

    String url = "Your App Url Here/processes/" + process_id;

    String json = "{"+
        "\"run-stateless\" : \"false\","+
        "\"data\" :"+
        "   { "+
        "       \"variables\" : "+
        "           {   \"Variable name\" : \"Variable value\" } "+
        "   } "+
        "}";

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    BufferedReader rd = null;
    CloseableHttpResponse cls = null;
    try {
        HttpPost request = new HttpPost(url);

        // set timeouts as you like
        RequestConfig config = RequestConfig.custom()
                .setSocketTimeout(60 * 1000).setConnectTimeout(20 * 1000)
                .setConnectionRequestTimeout(20 * 1000).build();

        request.setConfig(config);

        StringEntity params = new StringEntity(json);

        request.addHeader("Accept", "application/json");

        request.addHeader(
                "Authorization",
                "Basic "
                        + com.documentum.xmlconfig.util.Base64
                                .encode("username here" + ":"
                                        + "password here"));

        request.addHeader("Content-Type", "application/vnd.emc.xcp+json");

        request.setEntity(params);

        try {

            cls = httpClient.execute(request);

            HttpEntity entity = cls.getEntity();

            rd = new BufferedReader(new InputStreamReader(
                    entity.getContent()));
            String line = "";
            while (line != null) {
                line = rd.readLine();
                strResponse += line;
            }

            strResponse = strResponse.trim().replace("\n", "");

            String statusline = cls.getStatusLine().toString();
            if (!statusline.contains("200") && !statusline.contains("201")) {

                Log.write("Process is not started");
                // log the strResponse or do something with it

            } else {
                System.out.println("Process started successfully");
            }

        } catch (Exception e) {

            e.printStackTrace();
        }

    } finally {

        // using commons-io-2.4.jar
        IOUtils.closeQuietly(httpClient);
        IOUtils.closeQuietly(cls);
        IOUtils.closeQuietly(rd);

    }

关于java - 如何使用httpclient 4.3.6调用DCTM 7.1 REST API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32186321/

相关文章:

java - 当我运行单一测试时,内存中的 H2 是空的,但当我运行应用程序本身时,它会被填充

java - HTTP Post 到 API 返回 403 FORBIDDEN

java - 如何在 Apache HttpClient 中使用 SSL 客户端证书?

rest - 如何使用 Swagger 参数化 POST 的 URL?

rest - office365 microsoft graph 全文搜索

rest - channel :mychannel received discovery error:access denied Failed to evaluate transaction: Error: DiscoveryService: mychannel error: access denied

android - Httppost 找不到方法 setConfig android

java - 创建自定义 JFileChooser

java - 如何解决连接mssql时JNDI错误

java - 后退按钮命令在 android 中也可见