I am trying to access a rest webservice over SSL/TLS using APEX_WEB_SERVICE.MAKE_REST_REQUEST
on Oracle 12c/Apex 5.1. This results in the error message ORA-29248: an unrecognized WRL was used to open a wallet
. I have put the necessary certificates into the oracle wallet and stored it at the location specified in the code. It is accessible for the oracle user. Full code and error message below.
DECLARE
l_clob CLOB;
l_param_names apex_application_global.vc_arr2;
l_param_values apex_application_global.vc_arr2;
BEGIN
apex_web_service.g_request_headers(1).name := 'Content-Type';
apex_web_service.g_request_headers(1).VALUE := 'application/x-www-form-urlencoded';
apex_web_service.g_request_headers(2).name := 'apikey';
apex_web_service.g_request_headers(2).VALUE := 'this_is_the_api_key';
l_param_names(1) := 'fist_param_name';
l_param_values(1) := 'first_param_value';
l_param_names(2) := 'second_param_name';
l_param_values(2) := 'second_param_value';
-- Get the XML response from the web service.
l_clob :=
APEX_WEB_SERVICE.make_rest_request(
p_url => 'https://example.com/rest/webservice',
p_http_method => 'POST',
p_parm_name => l_param_names,
p_parm_value => l_param_names,
p_wallet_path => '/path/to/wallet/dir',
p_wallet_pwd => 'walletpassword');
-- Display the whole document returned.
DBMS_OUTPUT.put_line(l_clob);
END;
Errormessage:
ORA-29273: HTTP-Anforderung nicht erfolgreich
ORA-29248: Ein nicht erkannter WRL wurde zum Öffnen eines Wallets verwendet
ORA-06512: in "SYS.UTL_HTTP", Zeile 368
ORA-06512: in "SYS.UTL_HTTP", Zeile 1118
ORA-06512: in "APEX_050100.WWV_FLOW_WEB_SERVICES", Zeile 666
ORA-06512: in "APEX_050100.WWV_FLOW_WEB_SERVICES", Zeile 880
ORA-06512: in "APEX_050100.WWV_FLOW_WEBSERVICES_API", Zeile 236
ORA-06512: in Zeile 20
The ORA-29248 in english means:
ORA-29248: an unrecognized WRL was used to open a wallet
I found the quite simple solution. The wallet path must be prefixed with file:
like this:
-- Get the XML response from the web service.
l_clob :=
APEX_WEB_SERVICE.make_rest_request(
p_url => 'https://example.com/rest/webservice',
p_http_method => 'POST',
p_parm_name => l_param_names,
p_parm_value => l_param_names,
p_wallet_path => 'file:/path/to/wallet/dir',
p_wallet_pwd => 'walletpassword');