2016-06-15 3 views
2

Google 번역에 문자열을 보내는 작은 Windows 양식 프로그램을 작성했습니다. 대상 프레임 워크는 내 컴퓨터에 코드가 잘 작동C# - WebClient - Remoteserver가 503 오류를 보냅니다.

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"; 
       } 
} 

그래서 내 문제가 4.5.2 닷넷된다. 하지만 내 고객의 컴퓨터에는 항상 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 문자열을 브라우저에 복사하려고 시도했습니다.

내가 시도 할 수있는 것은 무엇입니까? 시간을 내 주셔서 감사합니다. 감사합니다. Dominik

EDIT : 문제가 해결되었습니다. 먼저 URL을 https://translate.google.com/?hl=en&;ie=UTF8&text= {0} & langpair = {1}로 변경 한 다음 보안 문자 문제를 받았습니다. 즉 = UTF8 & 텍스트 = {0} & langpair = {1} & 클라이언트 =

+0

Google에서 허용하지 않습니다. 'https'로 변경하십시오 : string url = String.Format ("https://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);' – Sakura

+0

@sakura 위의 코드가 내 컴퓨터의 LinqPad에서 잘 작동한다는 것을 알았습니다. 아마도 https로 301 리다이렉트를 받게 될 것입니다. 어쩌면 문제가 될 수 있습니다 –

+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

URL을 변경하는 중입니다. https://translate.google.com/?hl=en&;ie=UTF8&text={0}&langpair={1} 이렇게하면 2 개의 리디렉션이 차단됩니다. 1에서이 변경된 URL 및 초로 리디렉션 https://

+1

고마워, 그게 나를 도왔다. 이 변경 후 captcha에 오류가 발생했지만 URL 끝에 "& client ="를 추가하여 수정했습니다. https://translate.google.com/?hl=en&;ie=UTF8&text={0} & langpair = {1} & 클라이언트 = – Schlodi

0
, &을 translate.google.com/?hl=en : 나는 "& 클라이언트 ="URL의 끝에 추가하여이 문제를 해결

클라이언트의 컴퓨터에서 VPN 연결 또는 프록시 설정을 확인 했습니까?

+0

예,하지만 그게 문제가 아니 었습니다. 어쨌든 고마워! – Schlodi