我正在尝试使用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中的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)
答案 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);