【发布时间】:2012-03-28 16:41:05
【问题描述】:
从 XPage 中调用跨域 REST 服务的最佳方式是什么,我查看了 Social Enabler 应用程序,但在这种情况下,我还需要在另一台服务器上将一串内容发布到该服务,然后获取 JSON 响应并对其进行解析。
【问题讨论】:
标签: xpages
从 XPage 中调用跨域 REST 服务的最佳方式是什么,我查看了 Social Enabler 应用程序,但在这种情况下,我还需要在另一台服务器上将一串内容发布到该服务,然后获取 JSON 响应并对其进行解析。
【问题讨论】:
标签: xpages
无法从客户端 Javascript 进行跨域 REST 服务。
有一个解决方法,如果远程服务支持,则使用 JSONP。它基本上由一个脚本标签组成,该标签引用浏览器允许的远程站点上的另一个 javascript 资源。
除此之外,如果您使用服务器端 REST 代理,您可以从 XPage 调用远程服务。此方法用于 iNotes,例如与 Sametime 或 Quickr 集成。
http://www-10.lotus.com/ldd/lqwiki.nsf/dx/iNotes_proxy_configuration_qd85
此页面说明如何为您的服务配置嵌入式代理。
【讨论】:
选项 1:JSONP 示例:http://openntf.org/XSnippets.nsf/snippet.xsp?id=xsnippets-widget 代码:http://xsnippets.openntf.org
选项 2:Domino/iNotes 代理 http://www.openntf.org/Projects/pmt.nsf/DA2F4D351A9F15B28625792D002D1F18/%24file/SocialEnabler111006.pdf 05.01 节
选项 3:您自己的通用代理作为插件 http://www.openntf.org/Projects/pmt.nsf/DA2F4D351A9F15B28625792D002D1F18/%24file/SocialEnabler111006.pdf 05.02 节
选项 4:如上所述。实现服务器端代码以访问其他服务器。
【讨论】:
有几种选择:
对于选项 2 和选项 3,您可以使用这样的代码
URL url = new URL(http://yourresthot/restapi);
HttpCOnnection conn = url.openConnection();
if (conn.getResponseCode() != 200) {
throw new IOException(conn.getResponseMessage());
}
// Buffer the result into a string
BufferedReader rd = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
conn.disconnect();
return sb.toString();
【讨论】:
您可以使用 java URLConnection 使用 ssjs 获取 json 数据,并通过使用“eval”或“toJSON”,您可以将其重复并使用计算字段显示结果。
【讨论】: