Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我正在使用我的程序从印度nseindia网站下载链接,但现在我无法下载,出现错误403?_C#_.net - Fatal编程技术网

C# 我正在使用我的程序从印度nseindia网站下载链接,但现在我无法下载,出现错误403?

C# 我正在使用我的程序从印度nseindia网站下载链接,但现在我无法下载,出现错误403?,c#,.net,C#,.net,我正在使用我的程序从nseindia网站下载一个文件,但现在出现了一个错误,未找到禁止页面。使用此代码的同一站点的值 WebClient client = new WebClient(); client.Headers.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"); Stream data; try { data = client.OpenRead(

我正在使用我的程序从nseindia网站下载一个文件,但现在出现了一个错误,未找到禁止页面。使用此代码的同一站点的值

WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");

Stream data;
try
{
    data = client.OpenRead("http://www.nseindia.com/");
}
catch (Exception e)
{
    MessageBox.Show("Error: " + e.Message + e.Data + e.HelpLink);
    return "";
}
StreamReader reader = new StreamReader(data);
string s = null;
int count = 0;
while (reader.Read()>0)
{
    s = reader.ReadLine();
    if (s.Contains("<td class=\"t1\">"))
    {
        MessageBox.Show("Line: " + s);
       s= s.Remove(0, 18);
       s = s.Remove(s.Length - 5);
       count++;
       if (count == 5)
           break;
    }

}

data.Close();
reader.Close();
return s;

从技术上讲,您得到的是:

在简单的语言中,它表示您无权访问此资源


检查您的域是否阻止对此站点的请求。只需尝试在浏览器中打开它,看看它是否可以正常打开。

此站点似乎需要一个Accept HTTP请求头:

client.Headers[HttpRequestHeader.Accept] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
您当前所做的工作中会遇到的一个问题是,您完全依赖于您试图刮取的站点的工作方式。更不用说HTML解析代码的脆弱性了。更糟糕的是,这种情况随时可能发生变化,除非你拥有网站,否则你无法控制。明天,站点可能开始需要其他HTTP头,您的代码将再次停止工作。说这些只是为了让你做好准备


也许你可以联系网站所有者,看看他们是否提供官方API来使用他们的内容。

看起来NSE做了一些更改,现在你需要使用以下两个标题:

client.Headers[HttpRequestHeader.Accept]=text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8


client.Headers.Adduser-agent,Mozilla/5.0 Windows NT 6.1;WOW64 AppleWebKit/537.31 KHTML,如Gecko Chrome/26.0.1410.64 Safari/537.31

嗯。但是我以前在同一个网站上用我的程序做过。我可以直接访问这个网站。