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的结果是需要登录,请帮忙分析原因,谢谢。
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的结果是需要登录,请帮忙分析原因,谢谢。
CookieContainer cookieCon = new CookieContainer();
要用login那个,不能用new
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html