Запись исходного кода HTML с внешнего URL в строку

Я использую функцию DownloadString WebClient для хранения исходного HTML-кода веб-страницы в виде строки в веб-приложении C# (ASPX). Проблема в том, что строка, кажется, заканчивается, когда она попадает в часть источника HTML, которая имеет URL.

Я попытался записать строку в текстовый файл, и вот как это заканчивается:

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

Исходный веб-исходный код имеет около 50 строк после этого, что мое приложение не включает. Это даже не завершает строку, это заставляет меня думать, что косые черты - это какая-то последовательность разрыва строки в C#, может быть?

Для устранения неполадок я попробовал WebClient DownloadFile и сохранил исходный HTML-код по указанному веб-адресу непосредственно в текстовый файл. Это сработало, и данные не были усечены. Когда я попытался прочитать этот текстовый файл в строку, произошло то же самое.

Есть идеи? Я часами искал в Интернете и разбирался в этом, и я не могу понять это! Я также пробовал альтернативные методы записи данных из URL в строку, однако возникает та же проблема.

Заранее спасибо.

2 ответа

Я, наконец, понял это и подумал, что выложу свое решение для дальнейшего использования другими.

Поработав с ним дальше, я нашел обходной путь, используя следующий код (любезно предоставлено в этом посте: Невозможно получить веб-страницу)...

    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());

Я до сих пор не совсем понимаю, почему этот обходной путь был необходим, но я просто счастлив, что нашел решение!

Используйте Fiddler, чтобы перехватить HTTP-запрос и посмотреть, что сервер отправляет вам обратно. Если Fiddler показывает тот же контент ответа, что и DownloadString, значит, ваша проблема на сервере. В противном случае это ваш клиент.

Возможно, вы могли бы использовать DownloadData вместо DownloadString?

Другие вопросы по тегам