0

如何使用各种 RESTful 服务从 Oracle APEX 调用外部服务器或远程服务器,请告诉我。

谢谢和问候, Yokes G

4

1 回答 1

0

一种方法是设置一个 Rest Data Source 条目。我正在使用 Oracle Apex 20.2。

例如称为 myRest

使用简单 HTTP 远程服务器:不带 https 的服务器名称:包含端点 JSON 操作:GET 参数:标头参数

从 PostMan 复制和粘贴它非常容易。

然后您可以使用以下类型的代码来访问此 REST 服务

declare
    l_params apex_exec.t_parameters;
begin
    apex_exec.add_parameter( l_params, 'content', 'hello david' );
    apex_exec.add_parameter( l_params, 'to', '123456' );

    apex_exec.execute_rest_source(
        'myRest',
        'GET',
        NULL,
        l_params );
end;

请注意,我无法使用 Rest Data Sources 使 JSON 正常工作,因此我使用 make_rest_request ,如下所示:

declare
    l_host      constant varchar2(200) := 'https://platform.xxx.com';
    l_host_path constant varchar2(200) := l_host || '/v1/message';

    l_clob           clob;
    l_body clob;

begin

    l_body := '{
      "messages": [
          {
              "channel": "xxx",
              "to": "123",
              "content": "Hello from APEX"
          }
      ]
    }';

    apex_web_service.g_request_headers(1).name := 'Content-Type';
    apex_web_service.g_request_headers(1).value := 'application/json'; 
    apex_web_service.g_request_headers(2).name := 'Authorization';
    apex_web_service.g_request_headers(2).value := 'yourkey'; 

    l_clob := apex_web_service.make_rest_request(
          p_url         => l_host_path,
          p_http_method => 'POST',
          p_body        => l_body);

  end;

第二种方法很好,因为一切都在一个地方,您不需要引用 REST 数据源。

于 2021-03-11T10:00:30.770 回答