当前位置:编程学习 > C#/ASP.NET >>

请教关于Basic认证的问题

有一个网站http://192.168.1.110/,(注:网站是直接放在根目录下的,不知道是IIS还是TOMCAT发布的)设置了BASIC认证,我现在需要通过WinForm程序访问该网站获取数据。
首先用下面一段常规代码:
            NetworkCredential myCredentials = new NetworkCredential("user", "pwd");
            WebRequest myWebRequest = WebRequest.Create("http://192.168.1.110/");
            myWebRequest.Credentials = myCredentials.GetCredential(new Uri("http://192.168.1.110/"), "Basic");
            WebResponse myWebResponse = myWebRequest.GetResponse();
执行到最后一句直接抛出异常401未授权,这里需要说明的是以上代码没有问题,在测试项目中通过了,只对这个网站不起作用。后来研究了半天明白为什么了,HTTP头了少了SESSIONID,于是将代码修改如下:
            WebRequest wrqust = WebRequest.Create(new Uri("http://192.168.1.110/
            wrqust.PreAuthenticate = true;
            string a = "user:pwd";
            byte[] b = System.Text.Encoding.Default.GetBytes(a);
            a = Convert.ToBase64String(b);
            wrqust.Headers.Add("Authorization", "Basic " + a);
            wrqust.Headers.Add("Accept-Encoding", "gzip, deflate");
            wrqust.Headers.Add("Accept-Language", "zh-cn");
            wrqust.Headers.Add("Cookie", "SessionID=962IE22254");
            WebResponse response=null;
            try
            {
                response = wrqust.GetResponse();
             
            }
            catch(WebException e)
            {
                Console.WriteLine(e.Message);
            }
竟然获取数据了,其中SessionID=962IE22254是用HTTPAnalyzerStdV2抓的HTTP头里的,如果将SessionID任意换一个则依然报401未授权的异常。
想提两个问题:
1、如何在第一次访问(没有加用户名、密码、SESSIONID)的时候通过程序获取SESSIONID?因为SESSIONID是在WebResponse 里获取的,而wrqust.GetResponse()这句直接报错,所以WebResponse为空,无法获取SEEIONID。
2、用NetworkCredential 类如何通过BASIC认证?我的代码没问题,为何通不过呢?
--------------------编程问答-------------------- 沉的好快~~ --------------------编程问答-------------------- 自己顶一下 --------------------编程问答-------------------- 真是个麻烦事。。。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,