这个帖子数据是否发出两个请求

本文关键字:两个 请求 数据 是否 | 更新日期: 2023-09-27 18:35:12

我从Stackoverflow中获取了以下代码,并将其用于我的Web应用程序中。我目前面临一个问题,如果我使用此方法使用不正确的凭据提交我的用户名和密码,则在目标网站上会计算两次。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.yoursite.com");
request.Method = "POST";
formContent = "Username=" + someValue +
"&Password" + someValue2;
byte[] byteArray = Encoding.UTF8.GetBytes(formContent);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = HttpUtility.UrlDecode(reader.ReadToEnd());
reader.Close();
dataStream.Close();
response.Close();         

我想知道双重请求是否是由以下两行分别在上面的代码片段中发出请求引起的:

Stream dataStream = request.GetRequestStream();
WebResponse response = request.GetResponse();

多谢!

这个帖子数据是否发出两个请求

简而言之,是的:"双重请求是由以下两行引起的,每行在上面的代码片段中发出请求"。

其中每个方法都自行执行请求。

来自 GetResponse 的文档:

方法返回一个 WebResponse 对象,其中包含来自互联网资源的响应。返回的实际实例是 HttpWebResponse,可以类型转换为该类以访问特定于 HTTP 的属性。

来自 GetRequestStream 的文档:

GetRequestStream 方法返回一个流,用于为 HttpWebRequest 发送数据。返回 Stream 对象后,可以使用 Stream.Write 方法使用 HttpWebRequest 发送数据。 如果应用程序需要设置 ContentLength 属性的值,则必须在检索流之前完成此操作。 必须调用 Stream.Close 方法来关闭流并释放连接以供重用。无法关闭流会导致应用程序连接不足。