【发布时间】:2019-06-09 07:26:02
【问题描述】:
我正在尝试使用 c# httpclient 以编程方式从网站获取数据,但我无法获取数据。 我提供了下面的链接 https://ngodarpan.gov.in/index.php/home/statewise_ngo/5972/33/1
会有一个以表格格式显示的数据列表,如果您单击任何链接,将弹出一个包含完整详细信息集的弹出窗口,我需要以编程方式为每条记录获取它。
我尝试通过点击以下链接每次生成 csrf_token https://ngodarpan.gov.in/index.php/ajaxcontroller/get_csrf
并尝试将 csrf 令牌和 ID 传递给以下链接 https://ngodarpan.gov.in/index.php/ajaxcontroller/show_ngo_info
但这会引发错误 403 禁止。
private void sample1()
{
string str =
"https://ngodarpan.gov.in/index.php/ajaxcontroller/show_ngo_info";
var client = new HttpClient();
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("id", "169486"),
new KeyValuePair<string, string>("csrf_cookie_name",
"decab99c17a84a9040a03c362317289c")
};
var content = new FormUrlEncodedContent(pairs);
var response = client.PostAsync(str, content).Result;
}
{StatusCode:403,ReasonPhrase:'Forbidden',版本:1.1,内容:System.Net.Http.StreamContent,标头: { 日期:2019 年 6 月 9 日星期日 07:01:09 GMT 设置 Cookie:csrf_cookie_name=2e39ed6c9bb142836d81233ba1a94732; expires=星期日,2019 年 6 月 9 日 07:01:11 GMT;最大年龄=2;路径=/; httponly 服务器:Apache/2.4.6 服务器:(红帽企业 Linux) 服务器:OpenSSL/1.0.1e-fips 服务器:mod_fcgid/2.3.9 服务器:PHP/5.6.30 服务器:mod_wsgi/3.4 服务器:Python/2.7.5 X-Powered-By: PHP/5.6.30 内容长度:1131 内容类型:文本/html;字符集=UTF-8 }}
【问题讨论】:
-
您尝试访问的 api 必须受到授权和身份验证的保护,您需要拥有访问令牌,并且访问令牌应该具有获取信息所需的权限,因此基本上如果授权未通过则你得到 403,在你的请求中我也看不到你正在传递任何令牌。
标签: c# post httpclient form-data