Я отвечу на этот вопрос в двух частях: во-первых, сообщение об ошибке, которое вы получили, и во-вторых, как вы должны решить проблему.
Ваше сообщение об ошибке появилось в строке 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"];