Я написал небольшую программу окон, которая отправляет строку в google translate. Целевой структурой является .Net 4.5.2C# - WebClient - Remoteserver send 503 error
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)
Что-нибудь еще, что я могу попробовать? Спасибо за ваше время и ваши ответы! С уважением, Dominik
EDIT: Проблема решена. Сначала я сменил URL на https://translate.google.com/?hl=en&;ie=UTF8&text= {0} & langpair = {1}, а затем получил проблемы с captcha. Я решил это путем добавления "& клиента =" в конце URL: translate.google.com/?hl=en &, то есть = UTF8 & текст = {0} = & langpair {1} = & клиент
'http' не принимается Google. Измените его на 'https':' string url = String.Format ("https://www.google.com/translate_t?hl=ru&ie=UTF8&text={0}&langpair={1}", input, languagePair); ' – Sakura
@sakura Я не верю, что это проблема, так как приведенный выше код отлично работает в LinqPad на моей машине .. Или, может быть, так как я, вероятно, получаю 301 переадресацию на https. Возможно, это может быть проблема –
ваш код - не лучший способ пойти. вы можете использовать [этот код] (https://github.com/Airstriker/GoogleTranslator/blob/master/Translator.cs), который лучше. Пример использования: 'https: //translate.googleapis.com/translate_a/single? Client = gtx & sl = en & tl = de & dt = t & q = my + name + is + Sakura' – Sakura