HttpWebRequest / Response返回发送的cookie

时间:2013-06-17 18:12:40

标签: c# cookies httpwebrequest http-status-code-404

这个问题与以下内容有关但不同,我认为它保证了它自己的主题。

https://stackoverflow.com/questions/17033772/xmldocument-load-certain-urls-return-404-not-found

我收到404 Not Found错误,因为我的应用程序不像浏览器那样处理cookie。由于我访问的服务器是“主动 - 主动”,Akamai使用每个服务器返回的Cookie来保持粘性,因此网络浏览器知道返回cookie。

我用Google搜索并搜索了stackoverlow,但不确定我是否找到了正确的信息。是否有人能够指出如何更新我的应用程序的正确方向,以返回发送给我的Cookie,就像浏览器一样?

我以前使用的是WebClient,但后来切换到HttpWebRequest / Response下载响应流。这是我到目前为止所使用的,它适用于访问和下载文件。

HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(this.url);
webReq.KeepAlive = true;
webReq.Method = "GET";
webReq.ContentType = "text/html";
webReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webReq.Headers.Add("Accept-Language", "en-US,en;q=0.5");

HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse();
System.IO.Stream rxStream = webResp.GetResponseStream();

Encoding enc = System.Text.Encoding.GetEncoding(1252);
System.IO.StreamReader respStream = new System.IO.StreamReader(rxStream, enc);

string myString = respStream.ReadToEnd();

1 个答案:

答案 0 :(得分:1)

您可以使用CookieContainerHttpWebRequest上的HttpWebResponse将您从服务器收到的Cookie传递给您的下一个请求,就像浏览器一样。 一些文档和示例是here

还有一些使用WebClient Cookie的方法:Using CookieContainer with WebClient class