C# 如何向网站发送登录请求?
所以我想发送一个登录网站的请求,我该怎么做 我试过下面的代码:C# 如何向网站发送登录请求?,c#,request,C#,Request,所以我想发送一个登录网站的请求,我该怎么做 我试过下面的代码: string formUrl = "https://account.mojang.com/login"; string formParams = string.Format("email_address={0}&password={1}", "your email", "your password"); string cookieHeader; WebR
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行遇到一个错误:“无法发送带有此类动词的内容体。”我将分两部分回答这个问题:第一部分是您收到的错误消息,第二部分是您应该如何解决问题 您的错误消息来自第9行,显然由于某些原因,
req.GetRequestStream()
失败:
using (Stream os = req.GetRequestStream())
仔细查看消息的文本,很明显问题出在哪里-当WebRequest实现不支持GET请求时,您正在尝试发送带有GET请求的x-form-urlencoded
消息正文
无法发送包含此类型动词的内容体
GetRequestStream()
的功能是获取一个流,您可以将请求主体(“内容主体”)写入其中,在您的情况下是登录参数。您正在发送GET请求(GET和POST在HTTP规范中称为“动词”),而WebRequest不支持此操作
回到这里的实际问题,我相信您不是要发送GET请求,而是需要发送POST请求intead。如果是这种情况,则只需将第6行更改为:
req.Method = "POST";
大多数登录服务期望POST请求,GET请求在任何情况下都不起作用。但是,如果您想使用WebRequest对数据执行GET请求,则需要以不同的方式执行。数据必须编码到初始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"];
我将分两部分回答这个问题:第一部分是您收到的错误消息,第二部分是您应该如何解决这个问题 您的错误消息来自第9行,显然由于某些原因,
req.GetRequestStream()
失败:
using (Stream os = req.GetRequestStream())
仔细查看消息的文本,很明显问题出在哪里-当WebRequest实现不支持GET请求时,您正在尝试发送带有GET请求的x-form-urlencoded
消息正文
无法发送包含此类型动词的内容体
GetRequestStream()
的功能是获取一个流,您可以将请求主体(“内容主体”)写入其中,在您的情况下是登录参数。您正在发送GET请求(GET和POST在HTTP规范中称为“动词”),而WebRequest不支持此操作
回到这里的实际问题,我相信您不是要发送GET请求,而是需要发送POST请求intead。如果是这种情况,则只需将第6行更改为:
req.Method = "POST";
大多数登录服务期望POST请求,GET请求在任何情况下都不起作用。但是,如果您想使用WebRequest对数据执行GET请求,则需要以不同的方式执行。数据必须编码到初始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"];
您是否尝试将http方法更改为POST?您尝试以编程方式登录minecraft帐户的原因是什么?您是否尝试将http方法更改为POST?您尝试以编程方式登录minecraft帐户的原因是什么?