| 发表于: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的结果是需要登录,请帮忙分析原因,谢谢。 |
|
|
|
|