2017-08-16 110 views
1

我必須獲取我的「apex_web_service.make_rest_request」請求的響應標頭。使用PL/SQL獲取來自Apex Web服務響應的響應頭文件

我知道這是可能的「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

在此先感謝您的答案!

回答

1

好吧,我現在找到了。答案可以在這裏找到:http://docs.oracle.com/database/121/AEAPI/apex_web_service.htm#AEAPI1933

有沒有這樣的事情作爲「get_Header()」或類似的東西。您設置您的標題併發送請求(此處爲示例代碼):

--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'); 

請求後自動將頭部「更改」爲響應頭。你可以得到響應頭如下:

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; 

如果你正在尋找一個特定的響應報頭(像我一樣),你可以使用這個:

--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);