从xPage调用API

问题描述 投票:0回答:1

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

得到这个错误......Error calling method 'openConnection()' on java class 'java.net.URL'ECL Permission Denied ("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;
    }
xpages lotus-domino xpinc hcl-notes
1个回答
2
投票

在这种方法中,有几件事你需要改变。

  • 不要使用SSJS的Java类。把你的整个逻辑包进一个Java bean中。它能给你带来更好的开发体验和 更容易测试
  • UrlConnection的级别太低了,对于https来说是个头疼的问题。使用 Apache HTTP客户端 库(在Domino服务器上可以使用)

一些 示例代码 应该让你沿着这些路线开始。

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

也可以看看这个 教程

© www.soinside.com 2019 - 2024. All rights reserved.