我想重用 WebRequest 对象,以便保存 cookie 和会话以供以后向服务器请求。下面是我的代码。如果我第二次使用 Post 函数两次
request.ContentLength = byteArray.Length;
它会抛出异常
写入开始后无法设置此属性!
但正如你所看到的
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 http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.cookies(v=VS.100).aspx,构造一个新的WebRequest并填充HttpWebRequest.CookieContainer http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.cookiecontainer(v=VS.100).aspx。 (您需要在第一个请求中分配一个CookieContainer以获取返回的Cookie。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)