有时我会收到错误,有时我会从网站获取数据
错误:
Wyjątek nieobsłużony: System.Net.WebException: Żądanie zostało przerwane: Połączenie zostało nieoczekiwanie zakończone.
w System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)
w System.IO.StreamReader.ReadBuffer()
w System.IO.StreamReader.ReadLine()
w ConsoleApplication3.Download.getUrlData() w c:\Users\user\Documents\Visual
Studio 2013\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs:wiersz 4
1
w ConsoleApplication3.Program.Main(String[] args) w c:\Users\user\Documents\V
isual Studio 2013\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs:wi
ersz 55
英文翻译: 请求已中止:连接意外终止
我的代码:
public string getUrlData()
{
WebClient client = new WebClient();
Random r = new Random();
//Random IP Address
client.Headers["X-Forwarded-For"] = r.Next(0, 255) + "." + r.Next(0, 255) + "." + r.Next(0, 255) + "." + r.Next(0, 255);
//Random User-Agent
client.Headers["User-Agent"] = "Mozilla/" + r.Next(3, 5) + ".0 (Windows NT " + r.Next(3, 5) + "." + r.Next(0, 2) + "; rv:2.0.1) Gecko/20100101 Firefox/" + r.Next(3, 5) + "." + r.Next(0, 5) + "." + r.Next(0, 5);
Stream datastream = client.OpenRead(Url);
StreamReader reader = new StreamReader(datastream);
StringBuilder sb = new StringBuilder();
while (!reader.EndOfStream)
sb.Append(reader.ReadLine());
return sb.ToString();
}
主要:
var d = new Download("http://wiocha.pl");
var str = d.getUrlData();
Console.WriteLine(str);
如何在没有错误的情况下每次获取数据?
答案 0 :(得分:0)
限制最大并发客户
我知道这是HttpWebRequest的限制:一次只能有1个或2个活动客户端请求。我不熟悉WebClient方式,但是在使用HttpWebRequest方法时必须主动处理HttpWebResponse对象。因此,我建议您在返回该字符串之前首先尝试处理数据流。
不是您的编程
看起来你是网络报废,他们正在切断你。你需要:
另一项改进
此外,您可以更轻松地将输入流转换为单个字符串:var responseString = reader.ReadToEnd();
。所以你不需要StringBuilder或While循环。