0

政府が認可したGoogleAPIキーを使用したときに、Googleからジオコーディングを取得する際に問題が発生しました。このプロジェクトは政府向けに開発されているため、このAPIキーを使用できるはずです。また、政府機関から、このAPIキーを使用し、会社のドメインをリストに追加する限り、Googleの無料制限なしでジオコーディングを取得できるはずだと言われました。Oracle 11gR2、Apex4.1を使用しています。グーグルはいくつかの結果(1600ジオコーディング)を返し、しばらくすると私のプログラムに例外がありましたが、次の問題が発生しました:

ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1722
ORA-29259: end-of-input reached
ORA-06512: at "SORS.SOR_TEST_SERVICE", line 24
ORA-06512: at "SORS.SOR_TEST_SERVICE", line 187
ORA-06512: at line 6
29273. 00000 - "HTTP request failed"
*Cause: The UTL_HTTP package failed to execute the HTTP request.
*Action: Use get_detailed_sqlerrm to check the detailed error message.
Fix the error and retry the HTTP request.

オンラインで検索したところ、OTNで次のスレッドが見つかりました。

https://forums.oracle.com/forums/thread.jspa?threadID=2253491

Google API証明書を取得して、Oracleウォレットにインストールする必要があるようです。私はそれについて何の経験もありません。誰かが私にそれについてのロードマップを教えてもらえますか?たとえば、Google証明書を取得するにはどうすればよいですか。Googleに連絡するか、ライセンスAPIキーを使用してリクエストを送信しますか?またはAPIキーは証明書ですか?例は非常に役立ちます!

これが私のコードです

   procedure Get_Geocoding(P_s_Address in varchar2, P_s_Geocoding out varchar2, P_n_accuracy out    number, P_b_success out boolean) is

  l_address varchar2(4000);
  l_url varchar2(32000);
  l_response varchar2(3200);
  n_first_comma number;
  n_second_comma number;
  n_level_length number;

 BEGIN
    /* TODO implementation required */

    l_address:=APEX_UTIL.URL_ENCODE(P_s_Address);
    l_address := replace(l_address,' ','+');

    l_url := 'http://maps.google.com/maps/geo?q='||l_address||'&'||'output=csv'||'&'||'key=my API key';
    l_response := utl_http.request(l_url, APEX_APPLICATION.G_PROXY_SERVER);



    n_first_comma:=instr(l_response,',',1,1);
    n_second_comma:=instr(l_response,',',1,2);
    n_level_length:=n_second_comma-n_first_comma-1;

    P_n_accuracy:=to_number(substr(l_response,n_first_comma+1, n_level_length));

    l_response:=substr(l_response,instr(l_response,',',1,2)+1);



   P_s_Geocoding:=l_response;
     if (P_s_Geocoding<>'0,0') then
       P_b_success:=true;
     else
      P_b_success:=false;
     end if;

 END;

}

どうもありがとう!

サム

4

1 に答える 1