日期:2014-05-20  浏览次数:20375 次

HttpWebRequest和HttpWebResponse的问题
string   Url   =   "http://xxx.xxx.com ";
                Uri   uri;
                HttpWebRequest   req   =   null;
                uri   =   new   Uri(Url);
                req   =   (HttpWebRequest)WebRequest.Create(uri);
                HttpWebResponse   res   =   null;
                res   =   (HttpWebResponse)req.GetResponse();

我用VS2005运行时候最后一句话没问题,但是放到IIS下运行最后一句话就会出问题:(有的Url有问题,有的没有...)
System.Net.WebException:   The   remote   server   returned   an   error:   (403)   Forbidden.   at   System.Net.HttpWebRequest.GetResponse()   at   _Default.Page_Load(Object   sender,   EventArgs   e)  
 
请问是IIS的问题吗?

------解决方案--------------------
不是。是权限的问题,网站要权限才能访问。
设置HttpWebRequest.Credentials; 如果还有问题,抓一下http的包,看它的格式。
按如下方法发送:
CookieContainer cookieBox = new CookieContainer();
string data = "xxxxxxx ";
HttpWebRequest hWreq = (HttpWebRequest)WebRequest.Create( "http://xxx.com ");
hWreq.ContentType = "application/x-www-form-urlencoded ";
hWreq.Method = "POST ";
hWreq.CookieContainer = cookieBox;
hWreq.AllowAutoRedirect = true;
hWreq.ContentLength = data.Length;


Stream stream = hWreq.GetRequestStream();
StreamWriter sw = new StreamWriter(stream);
sw.Write(data);
sw.Close();
stream.Close();
//post数据后,再取HttpWebResponse
HttpWebResponse hWresp = (HttpWebResponse)hWreq.GetResponse();
hWresp.Cookies = cookieBox.GetCookies(hWreq.RequestUri);
Stream respStream = hWresp.GetResponseStream();
StreamReader reader = new StreamReader(respStream);
string outdata = reader.ReadToEnd();
reader.Close();
respStream.Close();