2009-04-24 102 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而不是网页浏览。