【问题标题】:C# - WebClient - Remoteserver send an 503 errorC# - WebClient - Remoteserver 发送 503 错误
【发布时间】:2016-10-16 07:53:25
【问题描述】:

我写了一个小的 Windows 窗体程序,它向谷歌翻译发送一个字符串。目标框架是.Net 4.5.2

 public string TranslateText(string input, string languagePair)
            {
                try
                {
                    string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);
                    WebClient webClient = new WebClient();
                    webClient.Encoding = System.Text.Encoding.UTF8;
                    string result = webClient.DownloadString(url);
                    result = result.Substring(result.IndexOf("<span title=\"") + "<span title=\"".Length);
                    result = result.Substring(result.IndexOf(">") + 1);
                    result = result.Substring(0, result.IndexOf("</span>"));
                    return result.Trim();
                }
                catch (WebException wex)
                {
                    var err = "";
                    using (var sr = new StreamReader(wex.Response.GetResponseStream()))
                        err= sr.ReadToEnd();
                    saveLog(err);
                    return "FEHLER";
                }
}

所以我的问题是,在我的机器上代码可以正常工作。但是在我客户的计算机上,总是出现 System.Net.WebException。 “远程服务器返回错误:(503) 服务器不可用”。 这是完整的错误:

System.Net.WebException: The remote server returner an error: (503) Server Unavailable.
   at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
   at System.Net.WebClient.DownloadString(Uri address)
   at WindowsFormsApplication1.Form1.TranslateText(String input, String languagePair)

我不知道,我应该怎么做。我试图停用防病毒软件和防火墙。我还尝试将 url 字符串复制到浏览器,并输入一些有效的输入 (http://www.google.com/translate_t?hl=en&ie=UTF8&text=test&langpair=de|en)

还有什么我可以尝试的吗? 感谢您的时间和答案! 最好的祝福, 多米尼克

编辑: 问题解决了。首先我将网址更改为https://translate.google.com/?hl=en&;ie=UTF8&text={0}&langpair={1},然后我收到了验证码问题。我通过在网址末尾添加“&client=”解决了这个问题: translate.google.com/?hl=en&;ie=UTF8&text={0}&langpair={1}&client=

【问题讨论】:

  • http 不被 Google 接受。改成https:string url = String.Format("https://www.google.com/translate_t?hl=en&amp;ie=UTF8&amp;text={0}&amp;langpair={1}", input, languagePair);
  • @sakura 我不相信这是问题所在,因为上面的代码在我机器上的 LinqPad 中运行良好。或者可能是因为我可能会收到 301 重定向到 https。也许这可能是一个问题
  • 您的代码不是好方法。你可以使用this code 更好。使用示例:https://translate.googleapis.com/translate_a/single?client=gtx&amp;sl=en&amp;tl=de&amp;dt=t&amp;q=my+name+is+Sakura
  • 感谢您的帮助和代码。目前,Jordan Coulam 的回答一切正常。但是当我遇到新问题时,我一定会使用你的代码。谢谢大家!

标签: c# webclient google-translate system.net.webexception


【解决方案1】:

您是否检查过客户计算机上的 VPN 连接或代理设置?

【讨论】:

  • 是的,我做到了,但这不是问题所在。还是谢谢你!
【解决方案2】:

尝试将您的网址更改为此 https://translate.google.com/?hl=en&amp;;ie=UTF8&amp;text={0}&amp;langpair={1} 这将阻止 2 次重定向。 1 到这个更改的 url 和一秒钟重定向到 https://

【讨论】:

猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2020-06-30
  • 2017-12-11
  • 1970-01-01
相关资源
最近更新 更多