从网站下载数据时出现问题

时间:2016-07-26 08:59:26

标签: c# .net

基本上我没有下载网页的经验,我试图让这个每日股票交易价格没有运气的页面。我不确定我在这里做错了什么,或者网络服务器不允许这种请求。网站适用于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);
           }

任何帮助将不胜感激。

编辑:我忘了包括错误。返回的字符串只包含一个字符 - @。

2 个答案:

答案 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方法,根据您的需要,您可能会发现这种方法很有用。