首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

新手提问: WinForm HttpRequest Session相关的有关问题

2011-12-15 
新手提问: WinForm HttpRequest Session相关的问题usingSystemusingSystem.NetusingSystem.TextusingSy

新手提问: WinForm HttpRequest Session相关的问题
using   System;
using   System.Net;
using   System.Text;
using   System.IO;
using   System.Threading;
using   System.Web;
using   System.Text.RegularExpressions;

namespace   AutoPM
{
///   <summary>
///   Summary   description   for   PostMessage.
///   </summary>
public   class   PostMessage
{
private   string   subject;
private   string   body;
private   string   userName;
private   string   password;
private   string   loginUrl;
private   string   semdMessageUrl;

private   string   cookieHeader;

public   PostMessage()   :   this( " ",   " ")
{
//
//   TODO:  
//
}


public   PostMessage(string   subject,   string   body)
{
this.subject   =   subject;
this.body   =   body;
}

///   <summary>
///   Message   subject
///   </summary>
public   string   Subject
{
set
{
this.subject   =   value;
}
}

///   <summary>
///   Message   body
///   </summary>
public   string   Body
{
set
{
this.body   =   value;
}
}

///   <summary>
///   Login   user   name
///   </summary>
public   string   UserName
{
set
{
this.userName   =   value;
}
}

///   <summary>
///   Login   password
///   </summary>
public   string   Password
{
set
{
this.password   =   value;
}
}

///   <summary>
///   Login   Url   address
///   </summary>
public   string   LoginUrl
{
set
{
this.loginUrl   =   value;
}
}

///   <summary>
///   Semd   private   message   Url   address
///   </summary>
public   string   SemdMessageUrl
{

set
{
this.semdMessageUrl   =   value;
}
}

public   void   SendMessage(   int   userId   )
{
HttpWebResponse   response   =   null;
string   result   =   " ";

try
{
Encoding   encoding   =   System.Text.Encoding.Default;

HttpWebRequest   request   =   (HttpWebRequest)WebRequest.Create(   semdMessageUrl   );
request.Method   =   "POST ";
request.Referer   =   "http://xxxxxxx ";

//   Post   data
string   postData   =   string.Format( "sTitle={0}&sContent={1} ",
                                                                  subject,


                                                                  body   );
byte[]   buffer   =   encoding.GetBytes(   postData   );
//   System.Windows.Forms.MessageBox.Show(   postData   );

//   Set   the   content   type   to   a   FORM
request.ContentType   =   "application/x-www-form-urlencoded ";

//   Get   length   of   content
request.ContentLength   =   buffer.Length;

//   Session
CookieContainer   cookieCon   =   new   CookieContainer();
request.CookieContainer   =   cookieCon;
request.CookieContainer.SetCookies(   new   Uri(semdMessageUrl),   cookieHeader   );

//
request.AllowAutoRedirect   =   false;

//   Get   request   stream
Stream   newStream   =   request.GetRequestStream();

//   Send   the   data.
newStream.Write(   buffer,   0,   buffer.Length   );

//   Close   stream
newStream.Close();

response   =   (HttpWebResponse)request.GetResponse();

Stream   ReceiveStream   =   response.GetResponseStream();
Encoding   encode   =   System.Text.Encoding.Default;
StreamReader   sr   =   new   StreamReader(   ReceiveStream,   encode   );
Char[]   read   =   new   Char[1024];
int   count   =   sr.Read(   read,   0,   1024   );
while   (count   >   0)
{
String   str   =   new   String(read,   0,   count);
result   +=   str;
count   =   sr.Read(read,   0,   1024);
}
}
catch(Exception   e)
{
result   =   e.ToString();
}
finally
{
if   (   response   !=   null   )
{
response.Close();
}
}

System.Windows.Forms.MessageBox.Show(result);
}

public   string   Login()
{
HttpWebResponse   response   =   null;
string   result   =   " ";

try
{
Encoding   encoding   =   System.Text.Encoding.Default;

Random   rd   =   new   Random((int)System.DateTime.Now.Ticks);

HttpWebRequest   request   =   (HttpWebRequest)WebRequest.Create(loginUrl);
request.Method   =   "POST ";

//   Post   data
string   postData   =   string.Format( "LoginName={0}&LoginPwd={1} ",   userName,   password);
byte[]   buffer   =   encoding.GetBytes(   postData   );

//   Set   the   content   type   to   a   FORM
request.ContentType   = "application/x-www-form-urlencoded ";

//   Get   length   of   content
request.ContentLength   =   buffer.Length;

request.AllowAutoRedirect   =   false;
CookieContainer   cookieCon   =   new   CookieContainer();


request.CookieContainer   =   cookieCon;

//   Get   request   stream
Stream   newStream   =   request.GetRequestStream();

//   Send   the   data.
newStream.Write(buffer,0,buffer.Length);

//   Close   stream
newStream.Close();

response   =   (HttpWebResponse)request.GetResponse();
cookieHeader   =   request.CookieContainer.GetCookieHeader(new   Uri(loginUrl));

Stream   ReceiveStream   =   response.GetResponseStream();
Encoding   encode   =   System.Text.Encoding.Default;
StreamReader   sr   =   new   StreamReader(   ReceiveStream,   encode   );
Char[]   read   =   new   Char[256];
int   count   =   sr.Read(   read,   0,   256   );
while   (count   >   0)
{
String   str   =   new   String(read,   0,   count);
result   +=   str;
count   =   sr.Read(read,   0,   256);
}
}
catch(Exception   e)
{
result   =   e.ToString();
}
finally
{
if   (   response   !=   null   )
{
response.Close();
}
}

return   result;
}
}
}


问题是:调用Login成功,看cookieHeader也没有问题,但接着调用SendMessage不成功,看Response的结果是需要登录,请帮忙分析原因,谢谢。

[解决办法]
// Session
CookieContainer cookieCon = new CookieContainer();
要用login那个,不能用new

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
up

热点排行