您的位置:程序门 -> .net技术 -> c#



新手提问: winform httprequest session相关的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


新手提问: winform httprequest session相关的问题[已结贴,结贴人:m1234]
发表于:2007-02-17 13:16:59 楼主
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的结果是需要登录,请帮忙分析原因,谢谢。
发表于:2007-02-17 13:48:171楼 得分:15
//   session
cookiecontainer   cookiecon   =   new   cookiecontainer();
要用login那个,不能用new
   
*****************************************************************************
欢迎使用csdn论坛专用阅读器   :   csdn   reader(附全部源代码)  

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
发表于:2007-02-17 13:52:462楼 得分:5
up
发表于:2007-06-04 20:07:463楼 得分:0
lz不要用这个httprequest,用socket什么问题都好解决,咱们交流一下,我用socket做了一个发贴机和验证码识别卖得很好 q:631753663


快速检索

最新资讯
热门点击