Xpages 来自xPage的API调用

Xpages 来自xPage的API调用,xpages,lotus-domino,xpinc,hcl-notes,Xpages,Lotus Domino,Xpinc,Hcl Notes,我有一个xPage,它使用服务器端Javascript beforePageLoad调用从远程JSON REST服务填充一些字段 获取此错误。。。。。 在java类“java.net.URL”上调用方法“openConnection()”时出错 ECL权限被拒绝(“java.lang.RuntimePermission”“accessClassInPackage.sun.net.www.protocol.https”) 这在web浏览器中工作。是否有任何客户端设置需要更改,或者是否有更好的方法来

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

获取此错误。。。。。 在java类“java.net.URL”上调用方法“openConnection()”时出错 ECL权限被拒绝(“java.lang.RuntimePermission”“accessClassInPackage.sun.net.www.protocol.https”)

这在web浏览器中工作。是否有任何客户端设置需要更改,或者是否有更好的方法来更改,以便我也可以在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;
    }
var url=”https://api.companieshouse.gov.uk/company/“+CompanyNo;
var url:java.net.url=新的java.net.url(url);
var urlconn:java.net.URLConnection=url.openConnection();
urlconn.setRequestProperty(“授权”,“基本xxxxxxxx==”;
if(urlconn.getResponseCode()<400){
变量读取器:java.io.BufferedReader=新的java.io.BufferedReader(
新的java.io.InputStreamReader(
urlconn.getInputStream())
);
var输入线;
var jsonTxt=“”;
而((inputLine=reader.readLine())!=null){
jsonTxt+=输入行;
}
reader.close();
viewScope.Response=fromJson(jsonTxt);
}否则{
/*来自服务器的错误*/
viewScope.Response=“Error”+urlconn.getResponseCode()+url;
}

在这种方法中,您需要改变以下几点:

  • 不要使用SSJS中的Java类。将您的整个逻辑包装到一个JavaBean中。它为您提供了更好的开发体验和
  • UrlConnection的级别太低,对于https来说是一个头疼的问题。使用库(在Domino服务器上可用)
有些应该让您按照以下思路开始:

HttpClient-HttpClient=new-HttpClient();
HttpMethod HttpMethod=新的GetMethod(this.targetURL);
int statusCode=httpclient.executeMethod(httpMethod);
//TODO检查状态代码200
字符串结果=httpMethod.getResponseBodyAsString();

另外,请检查此项

在这种方法中,您需要更改以下几点:

  • 不要使用SSJS中的Java类。将您的整个逻辑包装到一个JavaBean中。它为您提供了更好的开发体验和
  • UrlConnection的级别太低,对于https来说是一个头疼的问题。使用库(在Domino服务器上可用)
有些应该让您按照以下思路开始:

HttpClient-HttpClient=new-HttpClient();
HttpMethod HttpMethod=新的GetMethod(this.targetURL);
int statusCode=httpclient.executeMethod(httpMethod);
//TODO检查状态代码200
字符串结果=httpMethod.getResponseBodyAsString();

同时检查一下这个

简短的回答:不要在JavaScript中这样做,长的回答:见下文同意@stwissel。但您可能会在domino\jvm\lib\java.policy中附加“grant{permission java.security.AllPermission;};”--这是否清除了安全错误?简短回答:不要在JavaScript中执行此操作,长回答:请参阅下文同意@stwissel。但是您可能会在domino\jvm\lib\java.policy中附加“grant{permission java.security.AllPermission;};”--这是否清除了安全错误?感谢您的提示-抱歉,速度太慢了(我是一名老派Notes开发人员,没有与时俱进!)你能给我指一个创建JavaBean的分步演示吗?这样我也可以学习:)当然。给你:我已经开始做java bean了-谢谢你的帮助-代码似乎在本地副本上运行,但没有在服务器上运行-是否有一些权限需要更改?必须更改服务器安全文档-添加了我的ID(以前在一个组中),它开始工作:)我已经让我的java bean工作了(终于)-但是-faces-config.xml似乎被覆盖了(我假设是由设计任务覆盖的)-但它不是从模板继承的。。。。有什么想法吗?谢谢你的指点——很抱歉我的速度太慢了(我是一个不与时俱进的老式Notes开发人员!)你能给我指一个创建JavaBean的分步演示吗?这样我也可以学习:)当然。给你:我已经开始做java bean了-谢谢你的帮助-代码似乎在本地副本上运行,但没有在服务器上运行-是否有一些权限需要更改?必须更改服务器安全文档-添加了我的ID(以前在一个组中),它开始工作:)我已经让我的java bean工作了(终于)-但是-faces-config.xml似乎被覆盖了(我假设是由设计任务覆盖的)-但它不是从模板继承的。。。。有什么想法吗?