从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. Xpage REST服务控制和服务bean
- 2. WCF REST服务:允许跨域访问
- 3. 跨域AJAX REST服务HTTP标题
- 4. 使用CORS跨域REST/Jersey web服务
- 5. XPage使用JDBC数据的REST服务
- 6. jQuery ajax跨域发布到WCF休息服务
- 7. 跨域 - REST API
- 8. 使用easyXDM跨域发布
- 9. 从.NET发布到REST Web服务?
- 10. PHP发布到REST Web服务
- 11. 发布POST JSON到Jersey REST服务
- 12. 节点Mongo REST服务发布
- 13. 跨域Web服务调用
- 14. 访问Web服务 - 跨域
- 15. silverlight服务跨域错误
- 16. WCF REST服务支持来自jQuery Mobile的跨域调用
- 17. 使用jQuery跨域ajax到REST服务器
- 18. 跨域jQuery Ajax请求和WCF REST服务
- 19. 发送跨域HTTP发布HTML表单
- 20. 将json文件发布到我在REST服务中的java
- 21. 在向跨域服务器发送请求之前跨域jquery.ajax调用正在中止
- 22. Backbone REST API推荐/跨域
- 23. jQuery跨网域发布到rails网站
- 24. 发布并重定向到跨域URL
- 25. 如何在跨子网使用Bonjour发布服务?
- 26. ASP.Net中的跨域发布失去了表单域
- 27. Yii2 REST +角度跨域域CORS
- 28. 如何JSON数据发布到web服务REST在AngularJS
- 29. 如何发布JSON的REST Web服务在codenameone
- 30. 在互联网上发布我的REST风格的Web服务
谢谢 - 最后我创建了一个托管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