【问题标题】:IO Exception using java-google-translate-text-to-speech Api使用 java-google-translate-text-to-speech Api 的 IO 异常
【发布时间】:2015-04-29 20:38:52
【问题描述】:

我在使用 java-google-translate-text-to-speech 时遇到问题。尝试将一种语言翻译成另一种语言。这是我的代码:

import com.gtranslate.Language;
import com.gtranslate.Translator;
import java.io.IOException;

public class Main {
       public static void main(String[] args){
               Translator translate = Translator.getInstance();
               String text = translate.translate("Hello", Language.ENGLISH,Language.PORTUGUESE);
               System.out.println(text); 
              }
          }

它给了我一个错误:

 java.io.IOException: Server returned HTTP response code: 503 for URL: http://ipv4.google.com/sorry/IndexRedirect?continue=http://translate.google.com.br/translate_a/t%3Fclient%3Dt%26text%3DHello%26hl%3Den%26sl%3Den%26tl%3Den%26multires%3D1%26prev%3Dbtn%26ssel%3D0%26tsel%3D0%26sc%3D1&q=CGMSBHqsFhAY_L3FqQUiGQDxp4NLxnAO-gsMAyd56ktUpufqNjEC280

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1459)
at com.gtranslate.utils.WebUtils.source(WebUtils.java:24)
at com.gtranslate.parsing.ParseTextTranslate.parse(ParseTextTranslate.java:19) 

【问题讨论】:

    标签: java


    【解决方案1】:

    刚刚找到了一个简单的两步解决方案。请参阅以下 URL 中的评论 #4(只需对源代码进行少量修改):

    https://code.google.com/p/java-google-translate-text-to-speech/issues/detail?id=8

    评论 #4 中的

    STEP 1 很简单。让我从上面的网页中引用它:

    在 com.gtranslate.URLCONSTANT 类中更改 public static final String GOOGLE_TRANSLATE_TEXT = "http://translate.google.com.br/translate_a/t?";

    TO public static final String GOOGLE_TRANSLATE_TEXT1 = "http://translate.google.com.br/translate_a/single?";

    ...但是在 STEP 2 中,只需在 com.gtranslate.parsing.ParseTextTranslate.appendURL() 方法中生成的 URL 的末尾添加一个 &dt=t URL 参数值对就简单多了。

    ...上面评论 #4 中的原始步骤 2 如下,我引用 (FYR):

    STEP2) 在类中,appendURL 函数需要修改如下所示 com.gtranslate.parsing.ParseTextTranslate @Override public void appendURL() { Text input = textTranslate.getInput();文本输出 = textTranslate.getOutput(); url = new StringBuilder(URLCONSTANTS.GOOGLE_TRANSLATE_TEXT); /* url.append("client=t&text=" + input.getText().replace(" ", "%20")); url.append("&hl=" + input.getLanguage()); url.append("&sl=" + input.getLanguage()); url.append("&tl=" + output.getLanguage()); url.append("&multires=1&prev=btn&ssel=0&tsel=0&sc=1"); */

            url = new StringBuilder(URLCONSTANTS.GOOGLE_TRANSLATE_TEXT); 
    
    url.append("client=t&sl=auto&tl="+ output.getLanguage()
                    +"&hl=" + input.getLanguage()
                    +"&dt=bd&dt=ex&dt=ld&dt=md&dt=qc&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8&oe=UTF-8&otf=1&rom=1&ssel=0&tsel=3&kc=1&tk=620730|996163"
                    + "&q=" + input.getText().replace(" ", "%20"));
    

    }

    ............引用结束......而且sooooooooo,例如,只需替换appendURL()方法中的这一行:

    url.append("&multires=1&prev=btn&ssel=0&tsel=0&sc=1");
    

    ...到这个:

    url.append("&multires=1&prev=btn&ssel=0&tsel=0&sc=1&dt=t");
    

    另外这里是dt URL 参数的一些值,它实际上指定了要在回复中返回的内容:

    • t - 源文本的翻译
    • at - 替代翻译
    • rm - 源文本和翻译文本的转录/音译
    • bd - 字典,如果源文本是一个单词(你会得到带有文章的翻译、反向翻译等)
    • md - 源文本的定义,如果它是一个单词
    • ss - 源文本的同义词,如果是一个词
    • ex - 示例
    • ...

    P.S.:Google TTS 会发生类似的 HTTP 503 错误(由于后台 API 更改)。您可以在此处找到该问题的解决方案:Text to Speech 503 and Captcha Now

    【讨论】:

      【解决方案2】:

      HTTP 响应代码:503 : Service Unavailable 表示:服务器当前不可用可能是因为它超载或停机维护。

      由于服务器临时过载或维护,服务器当前可能无法处理请求。

      注意:某些服务器可能会简单地拒绝连接并可能导致 503 响应

      【讨论】:

        猜你喜欢
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-24
        • 1970-01-01
        • 2019-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多