1

我将 POST 发送到一个 url,如果响应使用 url 重定向(其中包含 jsessionid),那将是真的吗?否则为假。

怎么写?

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public bool od_auth(string login, string pass)
        {
            string HTML = PostData("");
            
            return true;
        }

        private void Auth_Click(object sender, EventArgs e)
        {
            string login = textBox1.Text;
            string pass = textBox2.Text;
            bool avt = od_auth(login, pass);
        }
        public static string PostData(string file, string data)
        {
            var cookies = new CookieContainer();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(file);
            request.Method = "POST";
            request.CookieContainer = cookies;
            request.AllowAutoRedirect = true;
            request.ContentType = "application/x-www-form-urlencoded";
            byte[] EncodedPostParams = Encoding.UTF8.GetBytes(data);
            request.ContentLength = EncodedPostParams.Length;
            request.GetRequestStream().Write(EncodedPostParams,
                                             0,
                                             EncodedPostParams.Length);
            request.GetRequestStream().Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string html = new StreamReader(response.GetResponseStream(),
                                           Encoding.UTF8).ReadToEnd();
            return html;
        }
    }
}
4

1 回答 1

1

您应该检查 response.StatusCode :

http://msdn.microsoft.com/en-us/library/system.web.httpresponse.statuscode.aspx

并测试重定向状态代码(301、302、303):

http://msdn.microsoft.com/fr-fr/library/aa383887%28en-us,VS.85%29.aspx

正如@hvd 所指出的,这不应该因为request.AllowAutoRedirect = true;.

你应该 :

  • request.AllowAutoRedirect = false;
  • 检查 response.StatusCode
  • 设置您的布尔值,具体取决于它是否是重定向状态代码
  • 基于“位置”构建新请求并检索其响应

顺便说一句,如果您没有要添加到第二个请求的内容,也许您可​​以将 response.ResponseUri 与之进行比较,file以查看响应是否已被重定向

于 2012-11-30T12:43:59.700 回答