DownloadData方法失败,出现未知错误,但仅限于某些PC

时间:2012-01-19 15:39:35

标签: c# google-translate webclient-download

我想征求意见。 我有一种方法可以向translate.google发送要翻​​译的文本字符串。该方法通过BackgroundWorker调用。问题是,在某些计算机上它可以正常工作,但在某些计算机上,我失败了DownloadData。异常仅报告未知错误。对不起我的英语。谢谢你的任何建议。

    private string translateCleanString(string cleanText)
    {
        UnicodeEncoding enc = new UnicodeEncoding();

        string url = string.Format("http://www.google.com/translate_t?text={0}&langpair={1}", cleanText, "sk|cs");
        byte[] data = null;

        using (WebClient client = new WebClient()) 
        {
            client.Encoding = UTF8Encoding.Default;
            client.Headers["User-Agent"] = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9";
            client.Headers["Accept-Language"] = "en-us,en;q=0.5";
            client.Headers["Accept-Charset"] = "ISO-8859-1,utf-8;q=0.7,*;q=0.7";

            try
            {
                data = client.DownloadData(url);   //Fail, row 300
            }
            catch(Exception e)
            {
                MessageBox.Show(e.Message);
            }

            return FiltracePrelozenehoTextuOdBordelu(Encoding.GetEncoding(Regex.Match(client.ResponseHeaders["Content-Type"], "(?<=charset=)[\\w-]+").Value).GetString(data));
        }
    }

编辑:例外

e.StackTrace

  • v System.Net.WebClient.DownloadDataInternal(Uri地址,WebRequest和请求)
  • v System.Net.WebClient.DownloadData(Uri地址)
  • v System.Net.WebClient.DownloadData(String address)
  • v Prekladac_titulku.Preklad.translateCleanString(String cleanText)v C:\ Users \ radicz \ Desktop \ Prekladac_titulku(verze 2)\ Prekladac_titulku(verze 2)\ Prekladac_titulku \ Preklad.cs:řádek300

e.InnerException

  • 无法从传输连接中读取数据:连接已关闭..

e.Message

  • 在WebClient请求期间抛出异常。

WebException e

  • 响应:NULL
  • 状态:未知错误
  • 来源:系统
  • InternalStatus:RequestFatal

1 个答案:

答案 0 :(得分:0)

尝试抓住WebException,看看它是否提供了更多详细信息。

 try
 {
      data = client.DownloadData(url);   
 }
 catch(WebException e)
 {
      MessageBox.Show(e.Status.ToString());
 }