c# - 如何在 C# 中从网站获取 HTTP 响应?
问题描述
我想看看如果我输入 URL + ' 我会得到响应,但我得到一个错误:“403 禁止”
这是我的代码:
foreach(string s in urls)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(s + "'");
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (request.GetResponse() == null)
{
Valid.Add(s);
Console.WriteLine(s);
}
}
}
解决方案
您需要在拨打电话之前设置凭据。凭据应根据 Web 服务器身份验证方法准备。
1)如果是windows认证,可以通过以下方式获取windows上下文凭证
System.Net.CredentialCache.DefaultNetworkCredentials
//if you know the user/pass, and domain
new NetworkCredential(sCredentialUserName, sCredentialPassword, sDomain);
这通常是企业域环境中的情况。
2)如果是基本身份验证并且您知道用户/密码,您可以使用相同的方式创建没有域的凭据。
new NetworkCredential(sCredentialUserName, sCredentialPassword);
关于请求和响应,通常我更喜欢使用 System.Net.WebClient 并根据要求为其创建一个包装类。
当您拨打电话时,它会是这样的:
using (System.Net.WebClient cli = new System.Net.WebClient())
{
......
//set credentials
cli.Credentials = Credentials;
//set headers
cli.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
//make a sync call
response = cli.UploadString(sRemoteUrl, "POST", sJsonRequest);
......
}
希望能帮助到你。
推荐阅读
- laravel - 如何实现对 Laravel Lighthouse 的 Group By 查询?
- python - 如何使用 Pyserial 在 python 中创建一个类以及如何初始化它
- reactjs - 如何在库更新后调试“编译失败”错误?
- mysql - 查找存储过程中排名最高的匹配项
- python - 使用 django 从 html 表单输入 Python 控制台
- node.js - npm install --production 忽略我的依赖
- ios - 如何跟踪连接到 iPad/iPhone 的鼠标的位置?
- java - 如何将子级添加到 Firebase 中的现有数据
- python - 如何在 Python Tkinter 中获取当前光标类型、颜色和大小?
- c++ - 为什么 const 按值结构绑定允许用户修改引用的变量?