2014-02-16 135 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()); 

我仍然不爲什麼這個解決辦法是必要完全清楚,但我很高興我找到了解決方案!