2012-03-27 93 views
1

从XPage内部调用跨域REST服务的最佳方式是什么,我查看了Social Enabler应用程序,但在这种情况下,我还需要在另一台服务器上向该服务发布一串内容,然后获取JSON响应并对其进行解析。在XPage中发布跨域REST服务

回答

2

有几种选择:

  1. 创建生成JSON一个XPage。这就是所谓的xagent(more info
  2. 创建的应用范围至极一个bean包含的代码直接使用Java的URL连接从TE服务检索数据并分析在载体或者任何其它Java对象的JSON,你可以工作
  3. 除了直接在事件代码中构造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(); 
5

跨域REST服务是不可能从客户端JavaScript。

有一种解决方法,如果远程服务支持这种方法,则使用JSONP。它基本上由一个脚本标记组成,该脚本标记引用远程站点上浏览器允许的另一个javascript资源。

除此之外,如果您使用服务器端REST代理,则可以从XPage调用远程服务。此方法正在用于iNotes,以便与Sametime或Quickr集成。

http://www-10.lotus.com/ldd/lqwiki.nsf/dx/iNotes_proxy_configuration_qd85

本页面说明如何配置为您服务的嵌入式代理。

0

您可以使用java URLConnection使用ssjs获取json数据,并使用“eval”或“toJSON”您可以将其重复放入并显示带有计算字段的结果。

4

选项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

谢谢 - 最后我创建了一个托管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