0

当我使用政府许可的 Google API 密钥时,我在从 Google 获取地理编码时遇到了问题。这个项目是为政府开发的,所以我们应该可以使用这个 API 密钥。政府代理人告诉我,只要我使用此 API 密钥并将我们公司的域添加到他们的列表中,我们应该能够在不受 Google 免费限制的情况下进行地理编码。我正在使用 Oracle 11gR2、Apex 4.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

0

如果您的数据库版本是 11.2.0.3 或以下,请检查数据库版本,可能会出现此错误。您需要安装补丁来升级基于 tls 的安全性。最低版本是 11.2.0.4.0。Oracle 提供了补丁(19651773) 供windows 升级版本。

于 2016-06-14T17:53:57.807 回答