Как я могу отправить запрос на вход на сайт? - PullRequest
1 голос
/ 20 июня 2019

поэтому я хочу отправить запрос на вход на сайт, как я могу это сделать

Я пробовал код ниже:

string formUrl = "https://account.mojang.com/login";
            string formParams = string.Format("email_address={0}&password={1}", "your email", "your password");
            string cookieHeader;
            WebRequest req = WebRequest.Create(formUrl);
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method = "GET";
            byte[] bytes = Encoding.ASCII.GetBytes(formParams);
            req.ContentLength = bytes.Length;
            using (Stream os = req.GetRequestStream())
            {
                os.Write(bytes, 0, bytes.Length);
            }
            WebResponse resp = req.GetResponse();
            cookieHeader = resp.Headers["Set-cookie"];

В строке 9 появляется сообщение об ошибке: «Не удается отправить текст содержимого с глаголом этого типа».

1 Ответ

0 голосов
/ 20 июня 2019

Я отвечу на этот вопрос в двух частях: во-первых, сообщение об ошибке, которое вы получили, и во-вторых, как вы должны решить проблему.

Ваше сообщение об ошибке появилось в строке 9, очевидно, req.GetRequestStream() не удалосьпо какой-то причине:

using (Stream os = req.GetRequestStream())

Если присмотреться к тексту сообщения, становится очевидным, в чем проблема - вы пытаетесь отправить тело сообщения x-form-urlencoded с GET-запросом, когда это не поддерживается.реализацией WebRequest.

Невозможно отправить тело контента с этим типом глагола.

Функция GetRequestStream() - получить поток, в который можно записать тело запроса.(«содержание»), в вашем случае параметры входа.Вы отправляете запрос GET (GET и POST в спецификации HTTP называются «глаголами»), а WebRequest не поддерживает это.

Возвращаясь к настоящей проблеме, я полагаю, что вы этого не сделали.означает отправить запрос GET и нужно отправить запрос POST intead.Если это так, то вам просто нужно изменить строку 6 следующим образом:

req.Method = "POST";

Большинство служб входа ожидают запросы POST и запросы GET ни в коем случае не работают.Однако, если вы хотите выполнить запрос GET с данными с помощью WebRequest, вам нужно сделать это по-другому.Данные должны быть закодированы в исходный URL, и нет необходимости получать поток запросов или писать в него.Фиксированный код в этом случае будет выглядеть так:

            string formURL = string.Format("https://account.mojang.com/login?email_address={0}&password={1}", "your email", "your password");
            string cookieHeader;
            WebRequest req = WebRequest.Create(formUrl);
            req.Method = "GET";
            WebResponse resp = req.GetResponse();
            cookieHeader = resp.Headers["Set-cookie"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...