1

POST を URL に送信し、応答が URL (jsessionid を含む) でリダイレクトされた場合、それは true になりますか? そうでなければ偽。

書き方は?

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を確認してください
  • リダイレクトステータスコードであるかどうかに応じてブール値を設定します
  • 「場所」に基づいて新しいリクエストを作成し、そのレスポンスを取得します

ところで、2番目のリクエストに追加するものがない場合は、response.ResponseUriをと比較して、fileレスポンスがリダイレクトされたかどうかを確認できます。

于 2012-11-30T12:43:59.700 に答える