从XPage内部调用跨域REST服务的最佳方式是什么,我查看了Social Enabler应用程序,但在这种情况下,我还需要在另一台服务器上向该服务发布一串内容,然后获取JSON响应并对其进行解析。在XPage中发布跨域REST服务
回答
有几种选择:
- 创建生成JSON一个XPage。这就是所谓的xagent(more info)
- 创建的应用范围至极一个bean包含的代码直接使用Java的URL连接从TE服务检索数据并分析在载体或者任何其它Java对象的JSON,你可以工作
- 除了直接在事件代码中构造URL连接的实例之外,请执行与2相同的操作。
对于这两个选项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();
跨域REST服务是不可能从客户端JavaScript。
有一种解决方法,如果远程服务支持这种方法,则使用JSONP。它基本上由一个脚本标记组成,该脚本标记引用远程站点上浏览器允许的另一个javascript资源。
除此之外,如果您使用服务器端REST代理,则可以从XPage调用远程服务。此方法正在用于iNotes,以便与Sametime或Quickr集成。
http://www-10.lotus.com/ldd/lqwiki.nsf/dx/iNotes_proxy_configuration_qd85
本页面说明如何配置为您服务的嵌入式代理。
您可以使用java URLConnection使用ssjs获取json数据,并使用“eval”或“toJSON”您可以将其重复放入并显示带有计算字段的结果。
选项1:JSONP 例子:http://openntf.org/XSnippets.nsf/snippet.xsp?id=xsnippets-widget 代码:http://xsnippets.openntf.org
选项2:多米诺/ 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:如上所述。实施服务器端代码以访问其他服务器。
- 1. jQuery跨域发布到WCF 4.0 REST服务
- 2. Xpage REST服务控制和服务bean
- 3. 使用CORS跨域REST/Jersey web服务
- 4. WCF REST服务:允许跨域访问
- 5. Ajax的跨域调用REST Web服务
- 6. 跨域AJAX REST服务HTTP标题
- 7. 在Android中发布到Rest服务器
- 8. XPage使用JDBC数据的REST服务
- 9. 跨域发布iframe
- 10. 发布和发现REST Web服务
- 11. AJAX跨域图像发布到WCF服务
- 12. jQuery ajax跨域发布到WCF休息服务
- 13. 发布跨域,无需访问服务器
- 14. 跨域 - REST API
- 15. 服务器发送事件 - 跨域safari
- 16. 跨域发布到Sinatra
- 17. 使用easyXDM跨域发布
- 18. 从其他网站发布表单(跨域和跨网页服务器)
- 19. 节点Mongo REST服务发布
- 20. REST风格的Web服务发布API
- 21. PHP发布到REST Web服务
- 22. 从.NET发布到REST Web服务?
- 23. Rest服务发布bean验证
- 24. 将JSONArray发布到REST服务
- 25. 发布与Java SE REST服务
- 26. 发布POST JSON到Jersey REST服务
- 27. WCF跨域服务创建
- 28. Web服务技术跨域
- 29. 跨域调用WCF服务
- 30. silverlight服务跨域错误
谢谢 - 最后我创建了一个托管bean(我从来没有这样做,但看到了如何使用http://per.lausten.dk/blog/2012/02/creating-your-first-managed-bean -for-xpages.html)在那里我做了POST连接,然后在XPage中,我使用这个bean通过调用它来获取数据。然后我在SSJS按钮中处理JSON数据。这现在运作良好。 – Anil 2012-03-28 17:32:22