基本上我没有下载网页的经验,我试图让这个每日股票交易价格没有运气的页面。我不确定我在这里做错了什么,或者网络服务器不允许这种请求。网站适用于chrome或IE。
using (WebClient client = new WebClient())
{
byte[] response = client.DownloadData("http://limun.hr/main.aspx?id=18");
string result = System.Text.Encoding.UTF8.GetString(response);
}
任何帮助将不胜感激。
编辑:我忘了包括错误。返回的字符串只包含一个字符 - @。
答案 0 :(得分:1)
某些网站会查看HTTP标头中的UserAgent字符串,以查看调用者是否是实际的Web浏览器。如果您使用HttpWebRequest类,则可以更好地控制呼叫,并可以欺骗UserAgent字符串以模拟真实的Web浏览器。尝试使用以下内容使其正常工作:
HttpWebRequest request = WebRequest.Create("http://limun.hr/main.aspx?id=18") as HttpWebRequest;
request.UserAgent = "Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)";
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(););
string content = reader.ReadToEnd();
reader.Close();
response.Close();
Console.WriteLine(content);
答案 1 :(得分:1)
问题确实是HTTP标头中的UserAgent字符串是错误的,但您可以使用WebClient
类在标头中添加该字符串,并使代码更简单:
using (WebClient client = new WebClient())
{
client.Headers.Add("user-agent", "Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)");
string res = client.DownloadString("http://limun.hr/main.aspx?id=18");
Console.WriteLine(res);
}
注意:WebClient
也有DownloadStringTaskAsync
方法,根据您的需要,您可能会发现这种方法很有用。