如何将 API 键用于 Google 云翻译 API

How to use API keys for Google cloud Translate API

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

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

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

我在 eclipse 中有 java 项目,我正在使用 "Run As"-> "Java application" 到 运行 它。

    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.call(TranslateImpl.java:113)
    at com.google.cloud.translate.TranslateImpl.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

有几件事帮助了我:

  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 和其他是我公司定义的常量...