xpages - 来自 xPage 的 API 调用
问题描述
我有一个 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;
}
解决方案
在这种方法中,您需要更改一些内容:
- 不要使用来自 SSJS 的 Java 类。将整个逻辑包装到一个 Java bean 中。它给你更好的开发体验,更容易测试
- UrlConnection 级别太低了,对 https 来说很头疼。使用Apache HTTP 客户端库(在 Domino 服务器上可用的 AFAIK)
一些示例代码应该可以帮助您从以下几方面着手:
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 教程
推荐阅读
- matlab - 寻找等高线图最大值的位置
- python-3.x - 荷兰国旗问题在 O(n) 中运行
- powerbi - 如何隐藏/取消隐藏同一图中的两条线之一?
- machine-learning - sklearn 聚类输出是否因机器而异?
- javascript - 图形中边缘标签的动态文本边距
- r - R:如何根据最低级别元素从复制()减少()列表到矩阵绑定
- python-2.7 - blob.download_as_string() 返回什么编码?
- python - 使用 Python 在 Salesforce 中更新自定义选项列表
- python - 遍历一个没有 double for 的列表
- c# - C# 条码扫描程序不接受字母字符