LotusScript NotesHTTPRequest RunOnServer代理配置问题
关于NotesHTTPRequest代理及RunOnServer配置的解决方案
1. NotesHTTPRequest的代理支持情况
NotesHTTPRequest暂不支持直接配置代理,这是当前Domino版本的功能限制,无法通过API参数直接指定代理。
2. 用RunOnServer执行NotesHTTPRequest的思路
由于客户端网络环境差异,通过RunOnServer让NotesHTTPRequest在服务器端执行,复用服务器的全局代理配置是可行的方案,但需要确保服务器和代码的配置都正确。
3. 完整配置步骤(解决服务器代理已配置但无法调用的问题)
步骤1:确认服务器文档的代理配置正确
打开Domino Administrator,找到目标服务器的服务器文档,完成以下配置:
- 切换到「Internet协议」→「HTTP」标签页
- 在「代理服务器设置」区域:
- 勾选「启用代理服务器」
- 填写代理服务器地址(如
proxy.yourcompany.com)和端口(如8080) - 若代理需要身份验证,填写代理用户名和密码
- 保存服务器文档,重启Domino服务器使配置生效
步骤2:确保RunOnServer的执行权限
- 执行RunOnServer的用户需拥有服务器的「运行受限Java代理」权限(在服务器文档的「安全性」→「服务器访问」→「运行受限Java/代理」列表中添加该用户)
- 确认服务器文档的「安全性」→「服务器访问」→「允许运行RunOnServer」列表包含该用户
步骤3:编写正确的RunOnServer调用代码
代码需确保在服务器端运行时直接复用服务器的代理配置,不要手动添加代理相关参数(因为NotesHTTPRequest不支持)。示例代码:
// 定义要在服务器端执行的任务 class HTTPRequestTask implements Runnable { public void run() { try { NotesHTTPRequest req = NotesContext.getCurrent().getSession().createHTTPRequest(); // 发起目标API请求 NotesHTTPResponse resp = req.get("https://target-api.example.com/data"); // 处理响应 System.out.println(resp.getStatusLine()); } catch (Exception e) { e.printStackTrace(); } } } // 调用RunOnServer执行任务 session.runOnServer(new HTTPRequestTask());
步骤4:排查网络及权限问题
- 测试服务器本身是否能通过代理访问目标API:可以在服务器上用curl或浏览器测试代理连通性
- 检查Domino服务器的防火墙规则:确保服务器能访问代理服务器的端口,同时代理服务器允许Domino服务器的IP访问目标API
- 查看Domino服务器日志(
console.log),排查是否有代理认证失败、连接超时等错误信息
内容的提问来源于stack exchange,提问作者andyleeyuan
相关产品推荐
相关产品推荐

