2014-02-16 73 views
0

我正在使用WebClient的DownloadString功能将网页的HTML源代码存储到C#Web应用程序(ASPX)中的字符串中。问题是,当字符串到达​​具有URL的HTML源代码的一部分时,该字符串似乎即将结束。从外部URL将字符串写入字符串

我试着写字符串到一个文本文件,这是怎么结尾:

<body class="page"> 
    <div id="container"> 
     <div id="header"> 
     <a href="http:// 

原始网页的源代码已经在这之后约50行,我的应用程序不包含。它甚至没有完成它的导致我认为斜杠是C#中的某种字符串中断序列可能?

要排除故障,我尝试了WebClient DownloadFile,并将HTML源代码直接保存在指定的Web地址中,并保存到文本文件中。这工作,并没有截断数据。当我尝试将这个文本文件读入一个字符串时,发生了同样的事情。

任何想法?我花了几个小时在网上搜索和填充,我无法弄清楚这一点!我也尝试了将URL中的数据写入字符串的替代方法,但同样的问题发生。

在此先感谢。

回答

0

使用Fiddler拦截HTTP请求并查看服务器发回给您的内容。如果Fiddler显示与DownloadString相同的响应内容,那么您的问题在服务器上。否则,它是你的客户。

也许你可以使用DownloadData而不是DownloadString?

+0

非常感谢。 Fiddler表明这是一个客户端问题,因为它包含完整的HTML源代码。这么奇怪。我会给DownloadData一个去。 – tpag26

+0

使用DownloadData然后转换为字符串给我同样的问题。令人沮丧! – tpag26

+0

你可以将C#代码添加到问题中吗? – Tys

0

我终于想通了,并认为我会发布我的解决方案,以备将来为他人参考。

瞎搞它经过进一步的我发现了一个变通方法使用下面的代码(这个职位的礼遇:Unable to Fetch a Webpage)...

StringBuilder sb = new StringBuilder(); 
    byte[]  buf = new byte[8192]; 
    HttpWebRequest request = (HttpWebRequest) 
     WebRequest.Create(url); 
    HttpWebResponse response = (HttpWebResponse) 
     request.GetResponse(); 
    Stream resStream = response.GetResponseStream(); 
    string tempString = null; 
    int count  = 0; 
    do 
    { 
     count = resStream.Read(buf, 0, buf.Length); 
     if (count != 0) 
     { 
      tempString = Encoding.ASCII.GetString(buf, 0, count); 
      sb.Append(tempString); 
     } 
    } 
    while (count > 0); 
    Console.WriteLine(sb.ToString()); 

我仍然不为什么这个解决办法是必要完全清楚,但我很高兴我找到了解决方案!