在 Alfresco 中来自 WebScript 的 HTTP 请求 [英] HTTP Request from WebScript in Alfresco
问题描述
我正在使用 JS 控制器在 Alfresco 中编写 WebScript,我想向本地 HTTP 资源发出 HTTP 请求.此资源是一个基于 Java 的应用程序,并为我提供了自己的 REST API.
I'm writing a WebScript in Alfresco using JS controller and I want to make a HTTP request to the local HTTP resource. This resource is a Java-based app and gives me its own REST API.
我的 WebScript 不是共享组件:所以我没有 remote
对象来调用另一个 webscript.
My WebScript is not a Share Component: so I don't have a remote
object to call another webscript.
如何从 WebScript 向本地资源(类似于/sdo/documents/getName?type=fl")发出 HTTP 请求?
How can I make a HTTP request to the local resource (something like '/sdo/documents/getName?type=fl') from a WebScript?
推荐答案
Alfresco 正在覆盖 Spring Surf webscripts.container
bean,删除 remote
定义(在 <remote-api
的code>web-scripts-application-context.xml):
Alfresco is overriding the Spring Surf webscripts.container
bean removing the remote
definition (in web-scripts-application-context.xml
of remote-api
):
<bean id="webscripts.container" class="org.alfresco.repo.web.scripts.RepositoryContainer" parent="webscripts.abstractcontainer">
<property name="name"><value>Repository</value></property>
<property name="scriptObjects">
<map merge="true">
<entry key="paging">
<ref bean="webscripts.js.paging"/>
</entry>
</map>
<!-- ..... -->
</bean>
我建议您再次将其作为自定义 Javascript API 根级对象包含在内.
I suggest you include it again as a custom Javascript API root level object.
remote
根对象来自 Spring Surf框架,这意味着无论是针对 Alfresco 存储库还是共享开发 Web 脚本,您都拥有它.作为证明,这里是网络脚本的来源a> 在公共 Alfresco CMIS 服务器中可用(-> Alfresco 存储库实例,如果要求您登录,则为 admin/admin):
The remote
root object comes from the Spring Surf framework, meaning you have it regardless of being developing your Web Scripts against the Alfresco repository or Share. As a proof, here's the source for a Web Script available in the public Alfresco CMIS server (-> Alfresco repository instance, admin/admin if you are asked to login):
var serviceUrl = (args.service === null) ? "/api/repository" : args.service;
var conn = remote.connect("alfresco");
var result = conn.get(stringUtils.urlEncodeComponent(serviceUrl));
var service = atom.toService(result.response);
var workspace = service.workspaces.get(0);
model.repo = workspace.getExtension(atom.names.cmisra_repositoryInfo);
以下代码片段取自 spring-surf-application-context.xml
,可在 Alfresco 的 spring-webscripts-1.0.0.CI-SNAPSHOT.jar
中找到3.4.0,这是remote
根对象的定义:
The following snippet is taken from spring-surf-application-context.xml
as found inside spring-webscripts-1.0.0.CI-SNAPSHOT.jar
of Alfresco 3.4.0, which is where the remote
root object gets its definition:
<bean id="webscripts.container" parent="webscripts.abstractcontainer" class="org.springframework.extensions.webscripts.LocalWebScriptRuntimeContainer">
<property name="name"><value>Spring Surf Container</value></property>
<property name="registry" ref="webscripts.registry" />
<property name="searchPath" ref="webframework.webscripts.searchpath" />
<property name="templateProcessorRegistry" ref="webframework.webscripts.registry.templateprocessor" />
<property name="scriptProcessorRegistry" ref="webframework.webscripts.registry.scriptprocessor" />
<property name="scriptParameterFactoryRegistry" ref="webscripts.web.scriptparameterfactoryregistry" />
<property name="configService" ref="web.config" />
<property name="scriptObjects">
<map merge="true">
<entry key="remote" value-ref="webframework.webscripts.scriptremote" />
</map>
</property>
<property name="processorModelHelper" ref="processor.model.helper"/>
<property name="extensibilityModuleHandler" ref="webscripts.extensibility.handler"/>
</bean>
<bean id="webframework.webscripts.scriptremote" class="org.springframework.extensions.webscripts.ScriptRemote">
<property name="configService" ref="web.config"/>
<property name="connectorProvider" ref="webframework.connector.provider"/>
</bean>
这篇关于在 Alfresco 中来自 WebScript 的 HTTP 请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!