0

我正在尝试使用 XMSI 在 Alfresco 中创建一个文件夹,下面是我正在使用的代码。

public static void main(String[] args) throws Exception { long start = System.currentTimeMillis();

    String host = "127.0.0.1";
    int port = 9080;
    String username = "admin";
    String password = "admin";
    String parentFolder = "Company%20Home";
    String folderName = "sales3";
    String description = "sales space3";

    RulesRequest request  = new RulesRequest();
    //request.setRemediationProfileObj(remediationProfile);
    Gson gs = new Gson();
    String json = gs.toJson(request);
    DefaultHttpClient client = new DefaultHttpClient();
    RestClient rstClnt = new RestClient();
    String  ticket = rstClnt.restClientPost(json, "http://127.0.0.10:9080/alfresco/service/api/login?u=admin&pw=admin", client);
    //String url = "http://" + host + ":" + port + "/alfresco/service/api/path/workspace/SpacesStore/" + parentFolder + "/children";
    String url = "http://localhost:9080/alfresco/service/cmis/s/workspace:SpacesStore/i/078b05c6-14bd-439c-a1ae-db032c5d98fc/children?alf_ticket="+ticket;

    String contentType = "application/atom+xml;type=entry";

    String xml = 
        "<?xml version='1.0' encoding='utf-8'?>\n" +
        "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:cmis='http://www.cmis.org/2008/05'>\n" +
        "<title>" + folderName + "</title>\n" +
        "<summary>" + description + "</summary>\n" +
        "<cmis:object>\n"+
        "<cmis:properties>\n" +
        "<cmis:propertyString cmis:name='cmis:objectTypeId'>\n" +
        "<cmis:value>cmis:folder</cmis:value>\n" +
        "</cmis:propertyString>\n" +
        "</cmis:properties>\n" +
        "</cmis:object>\n" +
        "</entry>\n"; 




    DefaultHttpClient httpclient = new DefaultHttpClient();

    httpclient.getCredentialsProvider().setCredentials(
            new AuthScope(host, port),
            new UsernamePasswordCredentials(username, password));

    HttpPost httppost = new HttpPost(url);
    httppost.setHeader("Content-type", contentType);

    StringEntity requestEntity = new StringEntity(xml, "UTF-8");
    httppost.setEntity(requestEntity);


    System.out.println("executing request" + httppost.getRequestLine());
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();

    System.out.println("----------------------------------------");
    System.out.println(response.getStatusLine());
    if (entity != null) {
        System.out.println("Response content type: " + entity.getContentType());
        long contentLength = entity.getContentLength();
        System.out.println("Response content length: "
                + entity.getContentLength());

        if (contentLength > 0) {
            byte [] b = new byte[(int) contentLength];
            entity.getContent().read(b);
            System.out.println("Response content: " + new String(b));
        }

        entity.writeTo(System.out);
    }

    // When HttpClient instance is no longer needed,
    // shut down the connection manager to ensure
    // immediate deallocation of all system resources
    httpclient.getConnectionManager().shutdown();
    long end = System.currentTimeMillis();
    System.out.println("Time spend: " + (end-start) + "ms");
}

它不是创建一个文件夹,而是创建一个大小为 0 的文件。

谢谢加维特

4

1 回答 1

2

您的财产类型错误。您错误地使用cmis:propertyString而不是cmis:propertyId尝试以下操作

<cmis:propertyId propertyDefinitionId="cmis:objectTypeId">
    <cmis:value>cmis:folder</cmis:value>
</cmis:propertyId>

正如@Gagravarr 所说,如果您可以使用知名的客户端库,则可以轻松避免此类问题。如果您自己构建 HTTP 请求,则最好有充分的理由。

于 2013-05-20T14:28:37.193 回答