-1

和这个人吵了几天。希望我很厚,并且某处缺少分号。

我一直试图在我的本地机器上设置对启用 REST 的 SQL (RESS) 的引用,但 Apex 拒绝承认它。

我正在使用https://docs.oracle.com/database/apex-18.1/HTMDB/rest-enabled-sql-creating.htm#HTMDB-GUID-0906921E-AF79-49D4-B909-1C090F805D9D上的文章,其中看起来很简单。

在你问之前:

  • 是的,我已为 REST 启用了架构
  • 是的,我在 defaults.xml 文件中启用了 RESS 在此处输入图像描述
  • 是的,我已经使用 curl 命令(如 )测试了远离 APEX 的 RESS curl -i -X POST --user testuser1:testuser1 --data-binary "select sysdate from dual" -H "Content-Type: application/sql" -k http://localhost:8080/ords/hr2/_/sql,并且它可以工作。

然后在 APEX->Shared Components->Data Sources->REST Enabled SQL 中,我设置了这个参考: RESS 参考

它使用这些凭据:

凭证

但是,当我最初创建引用并对其进行测试时,我收到以下消息:

在此处输入图像描述

我到底做错了什么?使用 Oracle APEX 21.2.0 和 ORDS 版本 21.4.1.r0250904

4

1 回答 1

1

屏幕截图看起来不错。我现在将检查数据库是否可以使用 APEX_WEB_SERVICE 到达 ORDS 端点,如下所示(您可以为此使用 SQL*Plus 或 SQL Workshop):

declare
    l_result clob;
begin
    apex_web_service.set_request_headers(
        p_name_01   => 'Content-Type', 
        p_value_01  => 'application/sql' );

    l_result := apex_web_service.make_rest_request(
                    p_url         => 'http://localhost:8080/ords/hr2/_/sql',
                    p_http_method => 'POST',
                    p_username    => 'TESTUSER1',
                    p_password    => 'testuser1',
                    p_body        => 'select sysdate from dual' );

    dbms_output.put_line( l_result );
end;

可能的错误是...

  • 没有为 APEX_XXXXXX 用户设置 PL/SQL 网络 ACL
  • 数据库定义了代理服务器,该代理服务器无效
于 2022-03-02T09:45:33.990 回答