2009-04-24 119 views
0

從msdn中刪除了一些代碼後,我發現它不能像我想要的那樣正常工作。我正在嘗試使用谷歌翻譯,以及在飛行中爲我翻譯一些東西。問題是responseFromServer沒有包含翻譯文本,當我使用瀏覽器查看時,源代碼也不是,儘管在查看頁面本身時,chien很自豪地顯示出來。使用WebRequest檢索數據

void getTranslation() 
    { 
     WebRequest request = WebRequest.Create("http://translate.google.com/translate_t?hl=en#en|fr|dog"); 
     // Get the response. 
     WebResponse response = request.GetResponse(); 
     // Display the status. 
     Console.WriteLine(((HttpWebResponse)response).StatusDescription); 
     // Get the stream containing content returned by the server. 
     Stream dataStream = response.GetResponseStream(); 
     // Open the stream using a StreamReader for easy access. 
     StreamReader reader = new StreamReader(dataStream); 
     // Read the content. 
     string responseFromServer = reader.ReadToEnd(); 
     int index = 0; 
     while (responseFromServer.Substring(index).Contains("dog")) 
     { 
      index = responseFromServer.IndexOf("dog", index + 1); 
      Console.WriteLine(responseFromServer.Substring(index < 50 ? 0 : index - 50, 100)); 
      Console.WriteLine(" "); 
     } 
    } 

有沒有人知道我在這裏無法理解?還是一個網站,返回一個簡單的翻譯請求?

回答

3

原因是翻譯請求本身是一個異步AJAX請求。如果您查看您嘗試檢索的頁面的來源,則不會找到chien這個詞。

你可以看看Google AJAX Language API來達到你想要的。

+0

@帕特里克:您是否設法使您的需求發揮作用,或者您是否最終選擇了其他方法? – 2009-05-18 08:26:26

+0

我曾將此作爲學習練習,但最終沒有時間跟隨。我有讓法國同事翻譯我需要手工翻譯的選擇。 – Patrick 2009-06-10 13:28:55

2

它不工作,因爲此應用程序使用JavaScript來自動發佈。

如果您想要通過屏幕抓圖來做到這一點,您必須使用正確的參數對錶單的URL執行POST請求。

但是,您最好只使用他們的API而不是網頁瀏覽。