-1

このCookieを同じページに適用するため、ログインからCookieを取得する必要があります。これが私のコードです

        string boundary = "41184676334";
        string username = "username";
        string password = "password";


        string login_post_data =
               "POSTDATA=-----------------------------" + boundary  +
               "\nContent-Disposition: form-data; name=\"login\"" +
               "\n\n" + username  +
               "\n-----------------------------" + boundary  +
               "\nContent-Disposition: form-data; name=\"key\"" +
               "\n\n" + password  +
               "\n-----------------------------" + boundary  +
               "\nContent-Disposition: form-data; name=\"clcode\"" +
               "\n\n" +
               "\n-----------------------------" + boundary  + "--";

        var cookies = new CookieContainer();

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://site.com/cgi-bin/login.pl?logout");
        request.CookieContainer = cookies;



        request.Method = "POST";
        request.ContentType = "multipart/form-data; boundary=---------------------------" + boundary;

        request.Host = "site.com";
        request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1";
        request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        request.Referer = "https://site.com/cgi-bin/login.pl?logout";
        //request.Headers.Add("POSTDATA", post_data);

       using (var requestStream = request.GetRequestStream())
       {
           requestStream.Write(StrToByteArray(login_post_data), 0, StrToByteArray(login_post_data).Length);
        }



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



        using (Stream stream = response.GetResponseStream())
        {


            StreamReader reader = new StreamReader(stream);

            string temp = reader.ReadToEnd();
            richTextBox1.Text = temp;
        }


        foreach (string c in response.Cookies)
        {
            listBox1.Items.Add(c);
        }

「https://site.com/cgi-bin/login.pl?logout」はログイン後も同じページで、Cookieを渡す必要があります。

4

1 に答える 1

0

URLに送信されたリクエストで、ログインとログアウトを同時に試みているようです

https://site.com/cgi-bin/login.pl?logout

?logoutパラメーターを削除して、再試行してください。何も変わらない場合は、質問を更新してください。

コードが正しいかどうかについて話し合うことができるように、達成しようとしていることをさらに説明してください。

于 2012-08-14T14:52:19.543 に答える