【问题标题】:POSTing to cross-domain REST service from within an XPage从 XPage 内发布到跨域 REST 服务
【发布时间】:2012-03-28 16:41:05
【问题描述】:

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

【问题讨论】:

    标签: xpages


    【解决方案1】:

    无法从客户端 Javascript 进行跨域 REST 服务。

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

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

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

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

    【讨论】:

      【解决方案2】:

      选项 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:如上所述。实现服务器端代码以访问其他服务器。

      【讨论】:

      • 谢谢 - 最后我创建了一个托管 bean(我从未做过,但看到了如何使用 per.lausten.dk/blog/2012/02/…),我在其中进行 POST 连接,然后在 XPage 中我使用了 bean通过调用它来获取数据。然后我在 SSJS 按钮中处理了 JSON 数据。现在效果很好。
      【解决方案3】:

      有几种选择:

      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();
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-12-11
          • 2012-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-24
          • 1970-01-01
          • 1970-01-01
          • 2011-06-12
          相关资源
          最近更新 更多