【问题标题】:C# Send POST request and receive 303 statuscodeC# 发送 POST 请求并接收 303 状态码
【发布时间】:2013-05-23 17:41:30
【问题描述】:

我正在编写连接到网页并从文档正文接收特定数据的简单应用程序。

我是这样发送HttpWebRequest的:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://webpage.com/page1.php");
request.Method = "POST";
string postData = "some_post_data";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.Referer = "http://webpage.com/";
request.ContentLength = byteArray.Length;
request.CookieContainer = new CookieContainer();
request.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31";
request.Headers.Add("Cookie", string.Format("sess_id={0}", UserInfo.SessionId));
request.Headers.Add("Accept-Charset", "ISO-8859-2,utf-8;q=0.7,*;q=0.3");
request.Headers.Add("Accept-Language", "pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4");
request.Headers.Add("Accept-Encoding", "gzip");
request.AutomaticDecompression = DecompressionMethods.GZip;

Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close(); // *** [1] ***

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // *** [2] ***
dataStream = response.GetResponseStream();
response.Close();

StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();

很好!请求没问题,没有什么神奇的。关键是,在dataStream.Close();(第 [1] 行)之后,我收到 303 状态代码,这意味着将重定向到另一个页面。当我阅读点 [2] 的响应时,我看到了新的(重定向的)页面。

我想要的只是在重定向之前阅读标题。到底有没有可能?

【问题讨论】:

    标签: c# http http-status-code-303


    【解决方案1】:

    在调用GetResponse之前,将requestAllowAutoRedirect属性设置为false

    request.AllowAutoRedirect = false;
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    

    More information.

    【讨论】:

      猜你喜欢
      • 2014-07-13
      • 2011-03-03
      • 2019-05-04
      • 2020-04-12
      • 2020-07-18
      • 2016-01-25
      • 2014-02-24
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多