【问题标题】:How to use API keys for Google cloud Translate API如何使用 Google 云翻译 API 的 API 密钥
【发布时间】:2017-05-05 20:32:00
【问题描述】:

我正在尝试在 Java 中使用 Google 云翻译 API。我已经注册了免费试用版并从谷歌云控制台启用翻译 API 项目。我也有 API 密钥。

我提到 API usage reference 创建的 java maven 项目包括 google-cloud-translate 的依赖项。它也作为依赖项下载。在 java 类文件中,我使用与给定链接相同的代码,但它给了我以下错误。

我在任何地方都没有使用过 API 密钥,因为我不知道在哪里使用它。我认为这是问题所在,但不知道如何通过 API 密钥进行身份验证? 所以我错过了链接中的步骤“gcloud beta auth application-default login” 因为在命令行上运行它不起作用。

我在 Eclipse 中有一个 java 项目,我正在使用“运行方式”->“Java 应用程序”来运行它。

    Exception in thread "main" com.google.cloud.translate.TranslateException: connect timed out
    at com.google.cloud.translate.spi.DefaultTranslateRpc.translate(DefaultTranslateRpc.java:63)
    at com.google.cloud.translate.spi.DefaultTranslateRpc.translate(DefaultTranslateRpc.java:145)
    at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:113)
    at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:110)
    at com.google.cloud.RetryHelper.doRetry(RetryHelper.java:179)
    at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:244)
    at com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:110)
    at com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:124)
    at com.translate.main.Translator.main(Translator.java:83)
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:656)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
    at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:275)
    at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:371)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1104)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:998)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:93)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
    at com.google.cloud.translate.spi.DefaultTranslateRpc.translate(DefaultTranslateRpc.java:125)
    ... 7 more

【问题讨论】:

    标签: java google-translate


    【解决方案1】:

    帮助我的几件事:

    1. 使用我的 api 密钥如下:

      Translate translate = TranslateOptions.newBuilder().
      setApiKey((String)PropertyLoader.prop.get("GOOGLE_API_KEY")).
      build().getService();
      
    2. 我在公司代理后面运行代码(我真傻)。我在我的 java 代码和宾果游戏中添加了以下行(一个静态初始化程序)!!!

      static {
          System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
          System.setProperty("http.proxyPort", HTTP_PROXY_PORT);
          System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
          System.setProperty("https.proxyPort", HTTPS_PROXY_PORT);
      }
      

    HTTP_PROXY_HOST 和其他是为我的公司定义的常量...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 2016-02-12
      • 2021-11-18
      • 2018-08-30
      相关资源
      最近更新 更多