HttpWebRequest.GetRequestStream 出现的问题

   最近在做自动提交表单的模块,遇到了关于HttpWebRequest.GetRequestStream在执行写入流操作时有Cookie丢失的问题。

   上代码 :

1                     myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
2                     myHttpWebRequest.ContentLength = postBuilder.Length;
3                     myHttpWebRequest.Method = "POST";
4                     Stream myRequestStream = myHttpWebRequest.GetRequestStream();
5                     StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
6                     myStreamWriter.Write(postBuilder.ToString());
7                     //把POST数据写入HttpWebRequest的Request流 
8                     myStreamWriter.Close();

9                     myRequestStream.Close();

其实在执行 myStreamWriter.Write()时,HttpWebRequest就开始向服务器发送请求数据了,写入后response的数据已经接受到了,所以要在write之前配置好HttpWebRequest的CookieContainner。

附带一句MSDN上关于 myStreamWriter.Write()的解释:

  GetRequestStream 方法返回用于发送 HttpWebRequest 数据的流。返回 Stream 对象后,可以通过使用 Stream.Write 方法发送带有 HttpWebRequest 的数据。

检索流之前必须先设置 ContentLength 属性的值。

posted @ 2011-04-12 11:03  SoYoung  阅读(2105)  评论(0编辑  收藏  举报