我写了一个小的 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)
我不知道,我该怎么办。我试过停用防病毒软件和防火墙。我还尝试使用一些有效输入 ( http://www.google.com/translate_t?hl=en&ie=UTF8&text=test&langpair=de|en ) 将 url 字符串复制到浏览器
还有什么我可以尝试的吗? 感谢您的宝贵时间和回答! 此致, 多米尼克
编辑: 问题解决了。首先,我将 url 更改为 https://translate.google.com/?hl=en&;ie=UTF8&text= {0}&langpair={1} 然后我收到验证码问题。我通过在 url 的末尾添加“&client=”解决了这个问题:translate.google.com/?hl=en&;ie=UTF8&text={0}&langpair={1}&client=
最佳答案
尝试将您的网址更改为此
https://translate.google.com/?hl=en&;ie=UTF8&text={0}&langpair={1}
这将防止 2 次重定向。 1 到这个更改后的 url 和秒重定向到 https://
关于C# - WebClient - 远程服务器发送 503 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37831372/