我正在使用WebClient的DownloadString功能将网页的HTML源存储到C#Web应用程序(ASPX)中的字符串。问题是当字符串到达具有URL的HTML源的一部分时,字符串似乎结束了。
我尝试将字符串写入文本文件,结果如下:
<body class="page">
<div id="container">
<div id="header">
<a href="http://
原始网络源代码在此之后大约有50行,我的应用程序不包括。它甚至没有完成它的导致我认为斜杠是C#中某种字符串中断序列的可能吗?
要进行故障排除我尝试了WebClient DownloadFile并将我指定网址的HTML源直接保存到文本文件中。这有效,数据没有被截断。当我尝试将这个文本文件读成字符串时,同样的事情发生了。
有什么想法吗?我花了几个小时在网上搜索和填充,我无法弄清楚这一点!我还尝试了将数据从URL写入字符串的替代方法,但是会出现同样的问题。
提前致谢。
答案 0 :(得分:0)
使用Fiddler拦截HTTP请求并查看服务器发回给您的内容。如果Fiddler显示与DownloadString相同的响应内容,则问题出在服务器上。否则它是你的客户。
也许您可以使用DownloadData而不是DownloadString?
答案 1 :(得分: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());
我仍然不完全清楚为什么这种解决方法是必要的,但我很高兴我找到了解决方案!