2017-08-10 35 views
0

Oracle 12c/Apex 5.1でAPEX_WEB_SERVICE.MAKE_REST_REQUESTを使用してSSL/TLS経由で残りのWebサービスにアクセスしようとしています。これにより、エラーメッセージORA-29248: an unrecognized WRL was used to open a walletが発生します。私は必要な証明書をOracleウォレットに入れて、コードに指定された場所に保管しました。これはoracleユーザーがアクセスできます。以下の完全なコードとエラーメッセージ。 APEX_WEB_SERVICE.MAKE_REST_REQUESTの結果はORA-29248:ウォレットを開くときに認識されないWRLが使用されました

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 

ORA-29248:

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

答えて

0

私は非常に簡単な解決策を見つけました。ウォレットのパスには、file:という接頭辞が必要です。

-- 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'); 
関連する問題