url - 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());
解决方案
首先,我很抱歉,我没有注意到那里的错字。在配置 xml 片段中,对于属性 cmis-endpoint,我使用 alfesco而不是alfresco。我猜我的眼睛让我失望了。
然后我使用了以下有效的方法。
java.net.URL cmisUrl = new URL ((this.host + this.cmisAccessPoint));
cmisAtomPubUrl = cmisUrl.toString();
推荐阅读
- xcode - 本地 git 存储库显示没有“当前”分支
- c++ - 将三位值存储到无符号字符数组
- python - 为 Flask 应用程序完成 Ctrl+C 后,如何执行某些特定的语句集?
- python - 是否有任何文档描述 GSOC 算法(背景减法)的工作方式?
- oracle - 如何在 etext 模板中格式化数字
- java - 有没有办法从 android 的 google play store 获取推荐码?
- c - 需要帮助创建没有多次返回的递归函数
- stm32 - 如何使用 HAL_UART_Receive() 从 stm32 中的移远 L89 GPS 模块读取数据?
- regex - RegEx 用于忽略定义的边界
- python - 为什么 BeautifulSoup 不抓取整个网页?