netameta Ответов: 2

Попытка отправить имя пользователя/пароль с помощью post в C#


Я пытаюсь "войти на сайт с помощью WebRequest или WebClient, и, похоже, все идет не очень хорошо.
Одна из причин, вероятно, заключается в том, что я недостаточно хорошо понимаю логику этого.
Во всяком случае, вот код, который я в настоящее время использую, любая помощь высоко ценится.

private void button2_Click(object sender, EventArgs e)
        {
            string URLAuth = "http://www.lyndatobin-howes.com/wp-login.php";
            WebClient webClient = new WebClient();
            NameValueCollection formData = new NameValueCollection();
            formData["log"] = "xxxx";
            formData["pwd"] = "xxxx";
            formData["wp-submit"] = "Log In";
            formData["redirect_to"] = "http://www.lyndatobin-howes.com/wp-login.php";
            formData["testcookie"] = "1";
            byte[] responseBytes = webClient.UploadValues(URLAuth, "POST", formData);
            string resultAuthTicket = Encoding.UTF8.GetString(responseBytes);
            webClient.Dispose();

            //string searchammount = comboBox1.SelectedItem.ToString();
            WebRequest Logingrequest = WebRequest.Create("http://www.lyndatobin-howes.com/wp-login.php");
            Logingrequest.Credentials = CredentialCache.DefaultCredentials;
            Logingrequest.ContentType = "application/x-www-form-urlencoded";
            Logingrequest.Method = "POST";
            WebResponse response = Logingrequest.GetResponse();
            Stream dataStream = response.GetResponseStream();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream);
            // Read the content.
            string responseFromServer = reader.ReadToEnd();
            richTextBox2.Text = responseFromServer;

            reader.Close();
            dataStream.Close();
            response.Close();
        }

Sushil Mate

Чего вы здесь добиваетесь? не могли бы вы объяснить подробнее?

netameta

Я пытаюсь подключиться к сайту wordpress(моему собственному).

как я понимаю, я должен сделать это с помощью POST, и мне нужно каким-то образом отправить имя пользователя/пароль и какую-то другую переменную "post".

Теперь с помощью get легко я бы просто добавил к URL переменную и их значения, однако с post это немного отличается.

Я не знаю, является ли это логикой, с которой у меня возникли проблемы, или просто как написать код.

Поправьте меня, если я ошибаюсь.
в основном я предполагаю отправить запрос на URL - адрес с помощью метода post (с правильными данными- паролем имени пользователя) и правильным типом контента. учетные данные, как я понимаю, больше связаны с прокси-серверами.

после этого я должен получить ответ, и ответ должен иметь заголовки с файлом cookie "logged in" и следующей страницей после вашего входа в систему.

это примерно так и должно быть ?

2 Ответов

Рейтинг:
2

netameta

Я пробовал другой путь но все равно ничего:
любая помощь будет чрезвычайно признательна.

WebRequest Logingrequest = WebRequest.Create("http://www.lyndatobin-howes.com/wp-login.php");
            Logingrequest.Credentials = CredentialCache.DefaultCredentials;
            Logingrequest.ContentType = "application/x-www-form-urlencoded";
            Logingrequest.Method = "POST";
            string postData = "log=admin&pwd=m7625zsw&wp-submit=Log In&redirect_to=http://www.lyndatobin-howes.com/wp-login.php&testcookie=1";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            // Set the ContentLength property of the WebRequest.
            Logingrequest.ContentLength = byteArray.Length;
            Stream dataStream = Logingrequest.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            WebResponse response = Logingrequest.GetResponse();
            dataStream = response.GetResponseStream();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream);
            // Read the content.
            string responseFromServer = reader.ReadToEnd();
            richTextBox2.Text = responseFromServer;

            reader.Close();
            dataStream.Close();
            response.Close();


Рейтинг:
0

Sushil Mate

http://www.hanselman.com/blog/HTTPPOSTsAndHTTPGETsWithWebClientAndCAndFakingAPostBack.aspx[^]


или попробуй вот так..

public static void PostString (string address)
 {
     string data = "Time = 12:00am temperature = 50";
     string method = "POST";
     WebClient client = new WebClient ();
     string reply = client.UploadString (address, method, data);

     Console.WriteLine (reply);
 }



или попробуйте эту ссылку.

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx[^]