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

有关webrequest请求basic验证的问题

各位前辈:

我想用httpwebrequest 请求一个https连接:
                   https://gmail.google.com/gmail/feed/atom
可是一直返回401错误,请前辈们帮忙看看是哪里出了问题。。。
 

            WebProxy webProxy = new WebProxy(String.Format("http://{0}:{1}", proxyUrl, port));
            string url = String.Format("https://gmail.google.com/gmail/feed/atom", gmailAccount, password);
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Proxy = webProxy;
            req.AllowAutoRedirect = true;
            req.PreAuthenticate = true;
            req.Credentials = new NetworkCredential(gmailAccount, password);
            CookieContainer theCookies = new CookieContainer();
            req.CookieContainer = theCookies;
            req.Method = "Get";
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();//<======401 auth error
            Stream respStream = resp.GetResponseStream();
            DataSet ds = new DataSet();
            ds.ReadXml(respStream);



用httpwatch检查到的https头:

客户端:
(Request-Line) GET /mail/feed/atom HTTP/1.1
Accept image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Encoding gzip, deflate
Accept-Language zh-CN
Connection Keep-Alive
Cookie TZ=-480; GMAIL_RTT=304
Host mail.google.com
User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Tablet PC 2.0; CIBA)
服务器应答:
(Status-Line) HTTP/1.1 401 Unauthorized
Cache-Control private, max-age=0
Content-Length 147
Content-Type text/html; charset=UTF-8
Date Fri, 09 Jul 2010 10:33:38 GMT
Expires Fri, 09 Jul 2010 10:33:38 GMT
Server GSE
WWW-Authenticate BASIC realm="New mail feed"
X-Content-Type-Options nosniff
X-Frame-Options SAMEORIGIN
X-XSS-Protection 1; mode=block
客户端:
(Request-Line) GET /mail/feed/atom HTTP/1.1
Accept image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Encoding gzip, deflate
Accept-Language zh-CN
Authorization Basic aWNjaWRdbnRjYzo1MmNjNaJjYzUya2M=
Connection Keep-Alive
Cookie TZ=-480; GMAIL_RTT=304
Host mail.google.com
User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Tablet PC 2.0; CIBA)
服务器应答:
(Status-Line) HTTP/1.1 200 OK
Cache-Control private, max-age=0
Content-Length 796
Content-Type text/xml; charset=UTF-8
Date Fri, 09 Jul 2010 10:33:45 GMT
Expires Fri, 09 Jul 2010 10:33:45 GMT
Server GSE
Set-Cookie S=gmail=uYx-ATIVrNagyHEGzu8X-w:gmproxy=Op_ee4aoFvbSTulBMQyFtQ; Path=/mail; Secure
X-Content-Type-Options nosniff
X-Frame-Options SAMEORIGIN
X-XSS-Protection 1; mode=block

请前辈们帮忙了……
多谢。 --------------------编程问答-------------------- up 大家帮忙啊………………真的不知道怎么回事,网上的都尝试过了…… --------------------编程问答-------------------- 还是没有解决哦…… --------------------编程问答-------------------- 请使用下面的代码:

WebClient objClient = new WebClient();
objClient.Credentials = new System.Net.NetworkCredential("username", "password");
string response = Encoding.UTF8.GetString(objClient.DownloadData("https://mail.google.com/mail/feed/atom"));

我验证过了,不过我这里不需要使用proxy
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,