2017-08-10 2 views
0

J'essaie d'accéder à un service web de repos sur SSL/TLS en utilisant APEX_WEB_SERVICE.MAKE_REST_REQUEST sur Oracle 12c/Apex 5.1. Cela entraîne le message d'erreur ORA-29248: an unrecognized WRL was used to open a wallet. J'ai mis les certificats nécessaires dans le portefeuille de l'oracle et je l'ai stocké à l'endroit indiqué dans le code. Il est accessible à l'utilisateur Oracle. Code complet et message d'erreur ci-dessous. APEX_WEB_SERVICE.MAKE_REST_REQUEST résultats dans ORA-29248: un WRL non reconnu a été utilisé pour ouvrir un portefeuille

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 

L'ORA-29248 en anglais: moyen

ORA-29248: an unrecognized WRL was used to open a wallet 

Répondre

0

J'ai trouvé la solution tout à fait simple. Le chemin du portefeuille doit être précédé du préfixe file: comme suit:

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