政府が認可した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;
}
どうもありがとう!
サム