Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为谷歌云翻译API使用API密钥_Java_Google Translate - Fatal编程技术网

Java 如何为谷歌云翻译API使用API密钥

Java 如何为谷歌云翻译API使用API密钥,java,google-translate,Java,Google Translate,我试图在Java中使用谷歌云翻译API。我已经注册了免费试用版,并从谷歌云控制台启用了翻译API项目。我还随身带着API密钥 我提到了创建的JavaMaven项目,包括对GoogleCloudTranslate的依赖。它也作为依赖项下载。在java类文件中,我使用的代码与给定的链接相同,但它给了我以下错误 我没有在任何地方使用API键,因为我不知道在哪里使用它。我认为这就是问题所在,但我不知道如何传递用于身份验证的API密钥? 因此,我错过了链接中的“gcloud beta auth应用程序默认

我试图在Java中使用谷歌云翻译API。我已经注册了免费试用版,并从谷歌云控制台启用了翻译API项目。我还随身带着API密钥

我提到了创建的JavaMaven项目,包括对GoogleCloudTranslate的依赖。它也作为依赖项下载。在java类文件中,我使用的代码与给定的链接相同,但它给了我以下错误

我没有在任何地方使用API键,因为我不知道在哪里使用它。我认为这就是问题所在,但我不知道如何传递用于身份验证的API密钥? 因此,我错过了链接中的“gcloud beta auth应用程序默认登录”步骤 因为在命令行上运行它不起作用

我在eclipse中有一个java项目,我正在使用“RunAs”->“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
线程“main”com.google.cloud.translate.TranslateException中的异常:连接超时 位于com.google.cloud.translate.spi.DefaultTranslateRpc.translate(DefaultTranslateRpc.java:63) 位于com.google.cloud.translate.spi.DefaultTranslateRpc.translate(DefaultTranslateRpc.java:145) 位于com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:113) 位于com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:110) 位于com.google.cloud.RetryHelper.doRetry(RetryHelper.java:179) 位于com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:244) 位于com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:110) 位于com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:124) 位于com.translate.main.Translator.main(Translator.java:83) 原因:java.net.SocketTimeoutException:连接超时 位于java.net.DualStackPlainSocketImpl.waitForConnect(本机方法) 位于java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) 位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 位于java.net.socksocketimpl.connect(socksocketimpl.java:392) 位于java.net.Socket.connect(Socket.java:589) 位于sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:656) 位于sun.net.NetworkClient.doConnect(NetworkClient.java:175) 位于sun.net.www.http.HttpClient.openServer(HttpClient.java:432) 位于sun.net.www.http.HttpClient.openServer(HttpClient.java:527) 在sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:275) 位于sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:371) 位于sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191) 位于sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1104) 位于sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:998) 位于sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177) 位于sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) 位于com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:93) 位于com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972) 位于com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419) 位于com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352) 位于com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469) 位于com.google.cloud.translate.spi.DefaultTranslateRpc.translate(DefaultTranslateRpc.java:125) ... 还有7个
有两件事帮了我的忙:

  • 使用了我的api密钥,如下所示:

    Translate translate = TranslateOptions.newBuilder().
    setApiKey((String)PropertyLoader.prop.get("GOOGLE_API_KEY")).
    build().getService();
    
  • 我在运行公司代理背后的代码(愚蠢的我)。我在java代码和bingo中添加了以下行(静态初始值设定项)

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

    帮助我解决问题的两件事:

  • 使用了我的api密钥,如下所示:

    Translate translate = TranslateOptions.newBuilder().
    setApiKey((String)PropertyLoader.prop.get("GOOGLE_API_KEY")).
    build().getService();
    
  • 我在运行公司代理背后的代码(愚蠢的我)。我在java代码和bingo中添加了以下行(静态初始值设定项)

    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_代理_主机和其他主机是我公司的定义常量