【发布时间】:2021-06-06 18:57:32
【问题描述】:
我正在寻找一个将请求正文中的 json 文件传递给 apex_web_service.make_rest_request 的示例 有人可以给我举个例子吗?
谢谢, 研发
【问题讨论】:
标签: oracle rest oracle-apex
我正在寻找一个将请求正文中的 json 文件传递给 apex_web_service.make_rest_request 的示例 有人可以给我举个例子吗?
谢谢, 研发
【问题讨论】:
标签: oracle rest oracle-apex
我看到了两种通过 apex_web_service.make_rest_request 发送文件的方法。在我的示例中,我使用了从表 SAMPLE_TABLE 列 BLOB_LOGO 检索到的图像文件 blob。
将查询中的文件 blob 类型直接缓存到 blob 对象中,并通过 p_body_blob 参数发送
DECLARE
obj_sample SAMPLE_TABLE%ROWTYPE;
file_blob blob;
l_response clob;
BEGIN
-- query
select * INTO obj_sample
from SAMPLE_TABLE where ID = 123;
-- file as blob
file_blob := obj_sample.BLOB_LOGO;
l_response := apex_web_service.make_rest_request(
p_url => 'url/to/api/',
p_http_method => 'POST',
p_body_blob => file_blob,
p_proxy_override => 'url/to/proxy'
);
dbms_output.put_line(l_response);
END;
首先将文件 blob 数据类型转换为 base64 clob 对象,并通过 p_body 参数将其作为 json body (clob) 发送
DECLARE
obj_sample SAMPLE_TABLE%ROWTYPE;
json_sample clob;
file_clob clob;
l_response clob;
BEGIN
-- query
select * INTO obj_sample
from SAMPLE_TABLE where ID = 123;
-- file as clob
file_clob := apex_web_service.blob2clobbase64(obj_sample.BLOB_LOGO);
json_sample := json_object(
'SAMPLE_LOGO' value img_clob
);
apex_web_service.g_request_headers(1).name := 'Content-Type';
apex_web_service.g_request_headers(1).value := 'application/json';
l_response := apex_web_service.make_rest_request(
p_url => 'url/to/api/',
p_http_method => 'POST',
p_body => json_sample,
p_proxy_override => 'url/to/proxy'
);
dbms_output.put_line(l_response);
END;
【讨论】: