我从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();
非常感谢!
答案 0 :(得分:0)
简而言之,是的:“双重请求是由以下两行引起的,每行都在上面的代码片段中发出请求”。
这些方法中的每一种都是自己执行请求。
来自GetResponse的文档:
GetResponse方法返回一个WebResponse对象,该对象包含来自Internet资源的响应。返回的实际实例是HttpWebResponse,可以对该类进行类型转换以访问特定于HTTP的属性。
来自GetRequestStream的文档:
GetRequestStream方法返回用于发送HttpWebRequest数据的流。返回Stream对象后,您可以使用Stream.Write方法使用HttpWebRequest发送数据。 如果应用程序需要设置ContentLength属性的值,则必须在检索流之前完成此操作。 您必须调用Stream.Close方法来关闭流并释放连接以便重用。无法关闭流会导致应用程序用完连接。