Запись исходного кода 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?