Oracle 如何访问apex web服务模块响应正文中的集合

Oracle 如何访问apex web服务模块响应正文中的集合,oracle,plsql,oracle-apex,Oracle,Plsql,Oracle Apex,目标:以包含json集合的交互式网格、报表和/或表单的形式呈现rest服务中的APEX Web服务模块数据(例如联系人数据)。在引用的联系人示例中,重复标记和电话号码等数据 环境:Oracle云自治事务处理19c APEX v20 问题1:成功创建了一个Web服务模块,以及一个带有引用Web服务模块数据的交互式网格的页面。但是IG region列不包括对收集数据的引用,例如标签和电话号码。数据确实出现在Web服务模块响应主体中,因此我知道它正在将数据带回 问题2:当我尝试使用PL/SQL访问数据

目标:以包含json集合的交互式网格、报表和/或表单的形式呈现rest服务中的APEX Web服务模块数据(例如联系人数据)。在引用的联系人示例中,重复标记和电话号码等数据

环境:Oracle云自治事务处理19c APEX v20

问题1:成功创建了一个Web服务模块,以及一个带有引用Web服务模块数据的交互式网格的页面。但是IG region列不包括对收集数据的引用,例如标签和电话号码。数据确实出现在Web服务模块响应主体中,因此我知道它正在将数据带回

问题2:当我尝试使用PL/SQL访问数据时,如下面的示例所示,没有返回任何数据

 Declare 
    l_Var  Varchar2(3000);
 Begin
 l_Var := apex_web_service.make_rest_request
    (
    p_url => 'https://api.crmworkspace.com/v1/contacts',
    p_http_method => 'GET',
    p_parm_name => apex_util.string_to_table('ACCESS_TOKEN'),
    p_parm_value => apex_util.string_to_table('NotMyRealToken')
    );
Dbms_output.put_line('*' || l_Var);

End;
我做错了什么

谢谢 Joe对“问题1”的回答:

APEX中的Web源模块总是将RESTAPI的响应视为一个包含行和列的“表”——正如APEX组件所期望的那样。因此,Web源模块可以处理响应中的一个数组,它构成了行。在一行中,无法处理数组,因为这需要一个“嵌套”表。您可以手动修改Web源模块的数据配置文件,并包括特定的数组元素:

  • 编辑数据配置文件
  • 添加一列
  • 提供名称、数据类型和选择器。然后,选择器使用JSON数组语法,例如,
    orderItems[0]
您也可以在PL/SQL中使用Web源模块:

对“问题2”的答复:

如果没有返回任何数据,您可以查看HTTP状态代码(
apex\u web\u service.g\u status\u code
)。这可能是400500或其他错误响应。浏览响应头数组也会有所帮助

for h in 1 .. apex_web_service.g_response_headers.count loop
    dbms_output.put_line( apex_web_service.g_response_headers(h).name );
    dbms_output.put_line( apex_web_service.g_response_headers(h).value );
end loop;

错误是什么?谢谢!你的回答对它的实施非常有帮助。对于问题2,结果是我包含了一个额外的头变量,该服务不喜欢它,但它没有包含在web服务模块中。而且,问题1的答案非常合理。