代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

有没有办法通过登录信息来阅读C语言的网站#

  •  2
  • leora Matt Lacey  · 技术社区  · 15 年前

            WebRequest myWebRequest = WebRequest.Create("http://www.myurl.com/test.aspx");
            WebResponse myWebResponse = myWebRequest.GetResponse();
            Stream ReceiveStream = myWebResponse.GetResponseStream();
            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
            StreamReader readStream = new StreamReader(ReceiveStream, encode);
            string strResponse = readStream.ReadToEnd();
    

    问题是他们现在在页面上有身份验证,所以当我进入网站时会得到登录提示,必须输入用户名和登录名。

    我的代码现在返回错误:

    The remote server returned an error: (401) Unauthorized.
    

    我试着加上:

    myWebRequest.Credentials = new NetworkCredential("[username]", "[pwd]");
    

    而这个:

    ServicePointManager.ServerCertificateValidationCallback += delegate { return true; }; 
    

    但还是有同样的错误:

    在上面的WebRequest代码中是否有传递这些凭据的方法?

    2 回复  |  直到 15 年前
        1
  •  2
  •   SLaks    15 年前

    如果网站使用的是HTTP基本身份验证(浏览器生成的登录对话框),则可以设置 HttpWebRequest Credentials NetworkCredential 实例。

    CookieContainer 通过请求保留登录名。
    Fiddler 查看登录请求的外观。

        2
  •  1
  •   netadictos    15 年前

    myWebRequest.Credentials = new NetworkCredential("username","password");
    

    更深入的见解如下:

    http://www.west-wind.com/presentations/dotnetwebrequest/dotnetwebrequest.htm