通过http发送基本身份验证

尼克·普罗兹

我正在尝试从需要基本身份验证的页面读取源代码。但是,在我的HttpWebRequest中使用标头,甚至使用凭据,我仍然会返回未经授权的异常[401]。

string urlAddress = URL;
string UserName = "MyUser";
string Password = "MyPassword";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);    
            if (UserName != string.Empty)
            {
                string encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(UserName + ":" + Password));
                request.Headers.Add("Authorization", "Basic " + encoded);
                System.Net.CredentialCache credentialCache = new System.Net.CredentialCache();
                credentialCache.Add(
                    new System.Uri(urlAddress), "Basic", new System.Net.NetworkCredential(UserName, Password)
                );

                request.Credentials = credentialCache;

            }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //<== Throws Exception 401

Fiddler Auth结果

没有代理验证头。
存在WWW-Authenticate标头:Basic realm =“ example”

dbvega

如消息所述:

没有代理验证头。

然后,解决方法:

...
string urlAddress = "http://www.google.com";
string userName = "user01";
string password = "puser01";
string proxyServer = "127.0.0.1";
int proxyPort = 8081;

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(urlAddress);

if (userName != string.Empty)
{
    request.Proxy = new WebProxy(proxyServer, proxyPort)
    {
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential(userName, password)
    };

    string basicAuthBase64 = Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(string.Format("{0}:{1}", userName, password)));
    request.Headers.Add("Proxy-Authorization", string.Format("Basic {0}", basicAuthBase64));
}

using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
    var stream = response.GetResponseStream();
    if (stream != null)
    {
        //--print the stream content to Console
        using (var reader = new StreamReader(stream))
        {
            Console.WriteLine(reader.ReadToEnd());
        }
    }
}
...

希望对您有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HTTP通过基本身份验证获取Android

来自分类Dev

Satis HTTP基本身份验证-通过凭据

来自分类Dev

HTTP通过基本身份验证获取Android

来自分类Dev

angularjs:$ http基本身份验证

来自分类Dev

安全的HTTP基本身份验证

来自分类Dev

HTTP 基本身份验证注销

来自分类Dev

HTTP基本身份验证的基本超时

来自分类Dev

C#HTTP基本身份验证凭据发送得太早

来自分类Dev

使用基本身份验证和请求正文在 Java 中发送 HTTP POST 请求

来自分类Dev

Java的11 HttpClient的不发送基本身份验证

来自分类Dev

仅通过Express框架对某些URL使用HTTP基本身份验证

来自分类Dev

通过Https使用基本身份验证的骆驼http4下载文件

来自分类Dev

如何通过量角器在Chrome上处理HTTP基本身份验证?

来自分类Dev

通过HTTPS Java进行基本身份验证

来自分类Dev

XMLHttpRequest无法通过基本身份验证

来自分类Dev

XMLHttpRequest无法通过基本身份验证

来自分类Dev

通过Watir和基本身份验证

来自分类Dev

Serviceworker与HTTP基本身份验证冲突?

来自分类Dev

使用Android HTTP POST进行基本身份验证

来自分类Dev

Play框架2.4的HTTP基本身份验证

来自分类Dev

HTTP基本身份验证-无法连接

来自分类Dev

AFNetworking 2.0和HTTP基本身份验证

来自分类Dev

使用URLConnection的HTTP基本身份验证

来自分类Dev

使用HTTP Commons Client的基本身份验证

来自分类Dev

阻止HTTP基本身份验证显示图像提示

来自分类Dev

Snap中的HTTP基本身份验证?

来自分类Dev

使用Golang的HTTP基本身份验证

来自分类Dev

HTTP基本身份验证的编码密码字段

来自分类Dev

Firebase Cloud Functions HTTP基本身份验证