2016-06-15 6 views
2

Я написал небольшую программу окон, которая отправляет строку в 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} = & клиент

+0

'http' не принимается Google. Измените его на 'https':' string url = String.Format ("https://www.google.com/translate_t?hl=ru&ie=UTF8&text={0}&langpair={1}", input, languagePair); ' – Sakura

+0

@sakura Я не верю, что это проблема, так как приведенный выше код отлично работает в LinqPad на моей машине .. Или, может быть, так как я, вероятно, получаю 301 переадресацию на https. Возможно, это может быть проблема –

+0

ваш код - не лучший способ пойти. вы можете использовать [этот код] (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

ответ

1

Пытаюсь сменить ваш адрес на это https://translate.google.com/?hl=en&;ie=UTF8&text={0}&langpair={1} Это предотвратит 2 переадресации. 1 до этого измененного URL-адреса и секунд переадресации на https://

+1

Спасибо, человек, который мне помог. После этого изменения у меня возникла ошибка с капчей, но я исправил ее, добавив «& client =» в конце URL-адреса: https://translate.google.com/?hl=ru&;ie=UTF8&text={0} & langpair = {1} и клиент = – Schlodi

0

Вы проверили настройки VPN-соединения или прокси-сервера на компьютере своего клиента?

+0

Да, но это не проблема. В любом случае, спасибо! – Schlodi