使用 PL/SQL 从 Apex Web 服务响应获取响应 Headers
Getting Response Headers from Apex Web Service Response with PL/SQL
我必须得到我的“apex_web_service.make_rest_request”请求的响应 headers。
我知道使用“UTL_HTTP”包是可能的,如此处记录:https://docs.oracle.com/database/121/ARPLS/u_http.htm#BHAHDHHB
但是我如何使用“apex_web_service”来做到这一点?甚至有可能吗,因为我在本文档中找不到它? http://docs.oracle.com/database/121/AEAPI/apex_web_service.htm#AEAPI537
提前感谢您的回答!
好的,我现在找到了。答案可以在这里找到:http://docs.oracle.com/database/121/AEAPI/apex_web_service.htm#AEAPI1933
没有 "get_Header()" 之类的东西。您设置 headers 并发送请求(这里是示例代码):
--Set Request Headers
apex_web_service.g_request_headers(1).name := 'Authorization';
apex_web_service.g_request_headers(1).value := '[MY API TOKEN]';
apex_web_service.g_request_headers(2).name := 'Content-Type';
apex_web_service.g_request_headers(2).value := 'application/json';
apex_web_service.g_request_headers(3).name := 'Content-Length';
apex_web_service.g_request_headers(3).value := '[CONTENT LENGTH IN BYTES OF REQUEST BODY]';
l_lcResult := apex_web_service.make_rest_request(p_url => 'MY API URL'
,p_http_method => 'POST'
,p_body => 'REQUEST BODY IN JSON FORMAT');
请求后 headers "change" 自动响应 headers。您可以得到响应 headers 如下:
for i in 1.. apex_web_service.g_headers.count loop
l_vcHeaderName := apex_web_service.g_headers(i).name;
l_vcHeaderValue := apex_web_service.g_headers(i).value;
end loop;
如果您正在搜索特定的回复header(像我一样),您可以使用这个:
--Here we search for the header-field called 'Location'
for i in 1.. apex_web_service.g_headers.count loop
l_vcHeaderName := apex_web_service.g_headers(i).name;
l_vcHeaderValue := apex_web_service.g_headers(i).value;
exit when l_vcHeaderName = 'Location';
end loop;
dbms_output.put_line('Name: ' || l_vcHeaderName);
dbms_output.put_line('Value: ' || l_vcHeaderValue);
如果您需要 HTTP 响应代码,请使用:
apex_web_service.g_status_code
我必须得到我的“apex_web_service.make_rest_request”请求的响应 headers。
我知道使用“UTL_HTTP”包是可能的,如此处记录:https://docs.oracle.com/database/121/ARPLS/u_http.htm#BHAHDHHB
但是我如何使用“apex_web_service”来做到这一点?甚至有可能吗,因为我在本文档中找不到它? http://docs.oracle.com/database/121/AEAPI/apex_web_service.htm#AEAPI537
提前感谢您的回答!
好的,我现在找到了。答案可以在这里找到:http://docs.oracle.com/database/121/AEAPI/apex_web_service.htm#AEAPI1933
没有 "get_Header()" 之类的东西。您设置 headers 并发送请求(这里是示例代码):
--Set Request Headers
apex_web_service.g_request_headers(1).name := 'Authorization';
apex_web_service.g_request_headers(1).value := '[MY API TOKEN]';
apex_web_service.g_request_headers(2).name := 'Content-Type';
apex_web_service.g_request_headers(2).value := 'application/json';
apex_web_service.g_request_headers(3).name := 'Content-Length';
apex_web_service.g_request_headers(3).value := '[CONTENT LENGTH IN BYTES OF REQUEST BODY]';
l_lcResult := apex_web_service.make_rest_request(p_url => 'MY API URL'
,p_http_method => 'POST'
,p_body => 'REQUEST BODY IN JSON FORMAT');
请求后 headers "change" 自动响应 headers。您可以得到响应 headers 如下:
for i in 1.. apex_web_service.g_headers.count loop
l_vcHeaderName := apex_web_service.g_headers(i).name;
l_vcHeaderValue := apex_web_service.g_headers(i).value;
end loop;
如果您正在搜索特定的回复header(像我一样),您可以使用这个:
--Here we search for the header-field called 'Location'
for i in 1.. apex_web_service.g_headers.count loop
l_vcHeaderName := apex_web_service.g_headers(i).name;
l_vcHeaderValue := apex_web_service.g_headers(i).value;
exit when l_vcHeaderName = 'Location';
end loop;
dbms_output.put_line('Name: ' || l_vcHeaderName);
dbms_output.put_line('Value: ' || l_vcHeaderValue);
如果您需要 HTTP 响应代码,请使用:
apex_web_service.g_status_code