gpt4 book ai didi

c# - 此属性不能在写入开始后设置!在 C# WebRequest 对象上

转载 作者:行者123 更新时间:2023-11-30 19:33:57 26 4
gpt4 key购买 nike

我想重用 WebRequest 对象,以便保存 cookie 和 session 以供以后向服务器请求。下面是我的代码。如果我在

第二次使用 Post 函数两次

request.ContentLength = byteArray.Length;

会抛出异常

This property cannot be set after writing has started!

但如你所见

dataStream.Close();

应该关闭写入进程!有人知道发生了什么吗?

static WebRequest request;

public MainForm()
{
request = WebRequest.Create("http://localhost/admin/admin.php");
}

static string Post(string url, string data)
{
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(data);
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();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
reader.Close();
dataStream.Close();
response.Close();
request.Abort();
return responseFromServer;
}

最佳答案

您不能重复使用 WebRequest。取返回的HttpWebResponse.Cookies , 构造一个新的 WebRequest 并填充 HttpWebRequest.CookieContainer . (您需要在第一个请求中分配一个 CookieContainer 以获取返回的 Cookie。)

关于c# - 此属性不能在写入开始后设置!在 C# WebRequest 对象上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com