首页 > 解决方案 > 如何在 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);
        }
    }
}

标签: c#.net

解决方案


您需要在拨打电话之前设置凭据。凭据应根据 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);
    ......
}

希望能帮助到你。


推荐阅读