首页 > 解决方案 > CMIS 的 URL 字符串构造

问题描述

我在配置 xml 中有以下内容

<host>http://alfresco-test:8180</host>
<properties>
<property>
  <name>cmis-endpoint</name>
  <value>alfesco/api/-default-/public/cmis/versions/1.1/atom</value>
</property>
<property>
  <name>webscript-rest-endpoint</name>
  <value>alfresco/s/api</value>
</property>
</properties>

我阅读了这些并构建如下。

cmisAtomPubUrl = URLEncoder.encode((this.host + "/" + this.cmisAccessPoint), StandardCharsets.UTF_8.toString());


SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
Map<String, String> parametersMap = new HashMap<String, String>();
/*https://chemistry.apache.org/java/0.9.0/maven/apidocs/org/apache/chemistry/opencmis/commons/SessionParameter.html*/
parametersMap.put(SessionParameter.USER, this.user);
parametersMap.put(SessionParameter.PASSWORD, this.password);
parametersMap.put(SessionParameter.ATOMPUB_URL, cmisAtomPubUrl);
parametersMap.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());

List<Repository> repositories = new ArrayList<Repository>();
repositories = sessionFactory.getRepositories(parametersMap);

我遇到了一个例外,就像这样。

org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException: Cannot access "http%3A%2F%2Falfresco-test%3A8180%2Falfesco%2Fapi%2F-default-%2Fpublic%2Fcmis%2Fversions%2F1.1%2Fatom": no protocol: http%3A%2F%2Falfresco-test%3A8180%2Falfesco%2Fapi%2F-default-%2Fpublic%2Fcmis%2Fversions%2F1.1%2Fatom

如果我只是按原样放置整个 URL 字符串,它就可以工作。但是,由于我必须将它们分成两部分并构建它们,我想看看如何使它工作

如果我有它像下面,它的工作原理。

String url = "http://alfresco-test:8180/alfesco/api/-default-/public/cmis/versions/1.1/atom";

如果我执行以下操作,它将不起作用。

String host="http://alfresco-test:8180";
String cmisEndpoint = "alfesco/api/-default-/public/cmis/versions/1.1/atom";
String url = host + "/" + emisEndpoint;

同样,以下也不起作用

String host="http://alfresco-test:8180";
String cmisEndpoint = "alfesco/api/-default-/public/cmis/versions/1.1/atom";
String url = URLEncoder.encode( (host + "/" + emisEndpoint), StandardCharsets.UTF_8.toString());

标签: url

解决方案


首先,我很抱歉,我没有注意到那里的错字。在配置 xml 片段中,对于属性 cmis-endpoint,我使用 alfesco而不是alfresco。我猜我的眼睛让我失望了。

然后我使用了以下有效的方法。

java.net.URL cmisUrl = new URL ((this.host + this.cmisAccessPoint));
cmisAtomPubUrl = cmisUrl.toString();

推荐阅读