Alfresco 4.2.c rest api:创建网站给出错误

时间:2014-06-17 03:13:47

标签: rest alfresco

我正在尝试使用alfresco 4.2.c创建一个站点rest api / alfresco / wcservice / api / sites(PUT) 我正在使用管理员用户,因此没有权限问题。 我可以使用alfresco共享UI

成功创建网站
String objectToPost = "{\"shortName\":\"firm007\", \"title\":\"firm007\", \"description\":\"firm007\", \"visibility\":\"PRIVATE\", \"isPublic\":\"false\", \"sitePreset\":\"site-dashboard\"}";
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        HttpEntity<String> entity = new HttpEntity<String>(objectToPost,headers);

        String url = PRE_URL + "/alfresco/wcservice/api/sites"+"?alf_ticket="+ TICKET;
        String response = restTemplate.exchange(url,HttpMethod.POST, entity, String.class, new Object[] {}).toString();
        System.out.println("Created SITE response is =" + response);    

我在客户端代码上遇到500内部服务器错误 在露天服务器上,我得到了跟踪堆栈跟踪。

请帮助解决这个问题。 我想通过远程REST api调用创建一个露天站点

2014-06-17 08:39:38,232 ERROR [freemarker.runtime] [http-apr-8080-exec-4]模板处理错误:&#34;表达式site.shortName在第9行,第56列未定义在org / alfresco / repository / site / site.lib.ftl。&#34;

表达式site.shortName在org / alfresco / repository / site / site.lib.ftl的第9行第9行未定义。

有问题的指示:

==&GT; $ {url.serviceContext +&#34; / api / sites /&#34; + site.shortName}转义$ {jsonUtils.encodeJSONString(url.serviceContext +&#34; / api / sites /&#34; + site.shortName)} [在org / alfresco / repository / site的第9行第17行/site.lib.ftl]  在用户指令siteJSONManagers [在第2行,org / alfresco / repository / site / site.lib.ftl中的第1列]

用户指令siteLib.siteJSON中的

[第2行,org / alfresco / repository / site / sites.post.json.ftl中的第1列]

程序员的Java回溯:

freemarker.core.InvalidReferenceException:表达式site.shortName在org / alfresco / repository / site / site.lib.ftl的第9行第9行未定义。

引起:freemarker.core.InvalidReferenceException:表达式site.shortName在org / alfresco / repository / site / site.lib.ftl的第9行第56行未定义。     at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)     at freemarker.core.Expression.getStringValue(Expression.java:118)     at freemarker.core.AddConcatExpression._getAsTemplateModel(AddConcatExpression.java:98)     at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)     at freemarker.core.ListLiteral.getModelList(ListLiteral.java:119)     at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:91)     at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)     在freemarker.core.Expression.getStringValue(Expression.java:93)

1 个答案:

答案 0 :(得分:0)

解决了这个小小的益智游戏。

我没有将内容类型添加为“application / json”,因此请求正在咆哮错误的树并转到ftl而不是json

以下代码可以很好地在露天创建一个网站。

    headers.set("Content-Type", "application/json");

        String objectToPost = "{\"shortName\":\"firm008\", \"title\":\"firm008\", \"description\":\"firm008\", \"visibility\":\"PRIVATE\", \"isPublic\":\"false\", \"sitePreset\":\"site-dashboard\"}";
    System.out.println(objectToPost);

    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    **headers.set("Content-Type", "application/json");**

    HttpEntity<String> entity = new HttpEntity<String>(objectToPost,headers);

    String url = PRE_URL + "/alfresco/wcservice/api/sites"+"?alf_ticket="+ TICKET;
    String response = restTemplate.exchange(url,HttpMethod.POST, entity, String.class, new Object[] {}).toString();
    System.out.println("Created SITE response is =" + response);