ORA-28759: 无法用 apex_web_service.make_rest_request 打开文件
ORA-28759: failure to open file with apex_web_service.make_rest_request
我有一个成功的 POST 请求与邮递员上传一个文件调用这个 url :
当我尝试在 Oracle APEX 过程中应用它时:
l_resp := apex_web_service.make_rest_request(p_url => 'https://test.sharepoint.com/sites/BM/_api/web/GetFolderByServerRelativeurl("/sites/BM/BM_UPLOADS/")/Files/add(url="test_file.pdf",overwrite=true)';
p_file blob;', `
p_http_method => 'POST',
p_body_blob => p_file,
p_wallet_path =>
'file:/home/r_erp/wallet',
p_wallet_pwd => 'test@2022'
);
当 运行 我的程序出现错误:ORA-28759: 无法打开文件
我发现我做的 HTTPS 请求需要创建一个 oracle 钱包并在其中添加所需的证书。
所以我按照说明 here
但运气不好同样的错误:ORA-28759:无法打开文件
我不确定我是否为 Oracle wallet 添加了正确的 SharePoint 证书!
当我访问我的 SharePoint 网站时,我有这 3 个证书:
我下载了 leaf one : *.sharepoint.com 并通过 orapki 实用程序将其添加到钱包
这个添加成功。
我下载了第二个:DigiCert Cloud Services CA-1
但是当我尝试添加这个时出现错误:无法读取证书。
我也是运行这个程序ACL授予:
begin
dbms_network_acl_admin.create_acl (
acl => 'utl_https.xml',
description => 'HTTP Access',
principal => 'BM',
is_grant => TRUE,
privilege => 'connect',
start_date => null,
end_date => null );
dbms_network_acl_admin.add_privilege (
acl => 'utl_https.xml',
principal => 'BD',
is_grant => TRUE,
privilege => 'resolve',
start_date => null,
end_date => null
);
dbms_network_acl_admin.assign_acl (
acl => 'utl_https.xml',
host => '*.sharepoint.com',
lower_port => 443,
upper_port => 443 ); commit; end;
我在托管云服务上使用 oracle APEX,在 Linux OS 上使用 Apache Web 应用程序。
我还为 oracle wallet 路径及其中的所有文件授予了 777 权限。
同样的错误:ORA-29273:HTTP 请求失败
ORA-28759: 无法打开文件
我的问题:有什么遗漏我应该做的吗?
如何将 https 请求的正确证书下载到像 SharePoint 这样的平台?
ORA-28759: failure to open file
消息表明数据库无法在您在 p_wallet_path 参数中指定的位置打开钱包文件。
- 指定位置时,请确保使用完整的 URI,即
file:///path/to_file
(file://
是协议,后跟路径规范。
- 确保路径正确,并指向包含 ewallet.p12 和(可选)cwallet.sso 文件的目录。
- 确保操作系统权限允许数据库访问目录和打开文件。执行 Oracle 数据库进程的 OS 用户必须能够访问这些文件。
我有一个成功的 POST 请求与邮递员上传一个文件调用这个 url :
当我尝试在 Oracle APEX 过程中应用它时:
l_resp := apex_web_service.make_rest_request(p_url => 'https://test.sharepoint.com/sites/BM/_api/web/GetFolderByServerRelativeurl("/sites/BM/BM_UPLOADS/")/Files/add(url="test_file.pdf",overwrite=true)';
p_file blob;', `
p_http_method => 'POST',
p_body_blob => p_file,
p_wallet_path =>
'file:/home/r_erp/wallet',
p_wallet_pwd => 'test@2022'
);
当 运行 我的程序出现错误:ORA-28759: 无法打开文件
我发现我做的 HTTPS 请求需要创建一个 oracle 钱包并在其中添加所需的证书。 所以我按照说明 here
但运气不好同样的错误:ORA-28759:无法打开文件
我不确定我是否为 Oracle wallet 添加了正确的 SharePoint 证书!
当我访问我的 SharePoint 网站时,我有这 3 个证书:
我下载了 leaf one : *.sharepoint.com 并通过 orapki 实用程序将其添加到钱包 这个添加成功。
我下载了第二个:DigiCert Cloud Services CA-1 但是当我尝试添加这个时出现错误:无法读取证书。
我也是运行这个程序ACL授予:
begin
dbms_network_acl_admin.create_acl (
acl => 'utl_https.xml',
description => 'HTTP Access',
principal => 'BM',
is_grant => TRUE,
privilege => 'connect',
start_date => null,
end_date => null );
dbms_network_acl_admin.add_privilege (
acl => 'utl_https.xml',
principal => 'BD',
is_grant => TRUE,
privilege => 'resolve',
start_date => null,
end_date => null
);
dbms_network_acl_admin.assign_acl (
acl => 'utl_https.xml',
host => '*.sharepoint.com',
lower_port => 443,
upper_port => 443 ); commit; end;
我在托管云服务上使用 oracle APEX,在 Linux OS 上使用 Apache Web 应用程序。 我还为 oracle wallet 路径及其中的所有文件授予了 777 权限。 同样的错误:ORA-29273:HTTP 请求失败 ORA-28759: 无法打开文件
我的问题:有什么遗漏我应该做的吗? 如何将 https 请求的正确证书下载到像 SharePoint 这样的平台?
ORA-28759: failure to open file
消息表明数据库无法在您在 p_wallet_path 参数中指定的位置打开钱包文件。
- 指定位置时,请确保使用完整的 URI,即
file:///path/to_file
(file://
是协议,后跟路径规范。 - 确保路径正确,并指向包含 ewallet.p12 和(可选)cwallet.sso 文件的目录。
- 确保操作系统权限允许数据库访问目录和打开文件。执行 Oracle 数据库进程的 OS 用户必须能够访问这些文件。