【问题标题】:API calls from xPage来自 xPage 的 API 调用
【发布时间】:2020-06-03 15:35:29
【问题描述】:

我有一个 xPage,它使用服务器端 Javascript beforePageLoad 调用从远程 JSON REST 服务填充一些字段。

得到这个错误..... 在 java 类“java.net.URL”上调用方法“openConnection()”时出错 ECL 权限被拒绝 ("java.lang.RuntimePermission" "accessClassInPackage.sun.net.www.protocol.https")

这适用于网络浏览器。我是否需要更改任何客户端设置,或者是否有更好的方法来执行此操作,以便我也可以在 Notes XPiNC 环境中使用它?

代码如下...在此先感谢

var url = "https://api.companieshouse.gov.uk/company/" + CompanyNo;

var url:java.net.URL = new java.net.URL(url);
var urlconn:java.net.URLConnection = url.openConnection();
urlconn.setRequestProperty("Authorization", "Basic xxxxxxxx==");
if (urlconn.getResponseCode() < 400) {
 var reader:java.io.BufferedReader = new java.io.BufferedReader(
                                            new java.io.InputStreamReader(
                                            urlconn.getInputStream())
                                        );
 var inputLine;
    var jsonTxt = "";
    while ((inputLine = reader.readLine()) != null){
        jsonTxt += inputLine;
    }
    reader.close();

    viewScope.Response = fromJson(jsonTxt);
} else {
       /* error from server */

    viewScope.Response = "Error " + urlconn.getResponseCode() + url;
    }

【问题讨论】:

  • 简答:不要在 JavaScript 中这样做,长回答:见下文
  • 我同意@stwissel。但是您可以附加到 domino\jvm\lib\java.policy "grant { permission java.security.AllPermission; }; " -- 这是否清除了安全错误?

标签: xpages lotus-domino xpinc hcl-notes


【解决方案1】:

您需要在这种方法中进行一些更改:

  • 不要使用来自 SSJS 的 Java 类。将您的整个逻辑包装到一个 Java bean 中。它给你更好的开发体验和is easier to test
  • UrlConnection 级别太低了,对 https 来说很头疼。使用 Apache HTTP client 库(在 Domino 服务器上可用的 AFAIK)

一些sample code 应该可以帮助您从这些方面开始:

 HttpClient httpclient = new HttpClient();
 HttpMethod httpMethod = new GetMethod( this.targetURL );
 int statusCode = httpclient.executeMethod(httpMethod);
 // TODO Check for statusCode 200
 String result = httpMethod.getResponseBodyAsString();

也可以查看Baeldung tutorial

【讨论】:

  • 感谢您的指点 - 很抱歉很慢(我是老派的 Notes 开发人员,没有与时俱进!)您能否指出创建 java bean 的分步演示,以便我可以也学这个:)
  • 我已经开始使用 java bean - 感谢您的帮助 - 代码似乎在本地副本上运行,但不在服务器上 - 是否有一些权限需要更改?
  • 不得不更改服务器安全文档 - 添加了我的 ID(之前在一个组中)并且它开始工作了 :)
  • 我的 java bean 终于可以工作了——但是——faces-config.xml 似乎被覆盖了(我假设是设计任务)——虽然它不是从模板继承的....有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多