用httpwebrequest和网页交互,首先post到login页面,可以登陆,再用sniffer跟踪,得到需要post得数据,再向登陆后得一个页面post数据,可是getresponse得时候说内部服务器错误(500),查阅了很多资料没找到。请各位大侠帮忙
CookieContainer cookie = new CookieContainer();
string PostData = "__VIEWSTATE=dDwtNjMzMTkyMjIxOzs%2BKynjHA9NUemN0NbJdLlTGyFrUQs%3D&UserID=tjnmc%5Cchaihua&UserPass=Tjnmc%232006&ButtonSubmit=+";
string url = "http://10.142.13.61/website/default.aspx";
byte[] buffer;
buffer = Encoding.UTF8.GetBytes(PostData);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = buffer.Length;
req.CookieContainer = cookie; req.Timeout = 50000;
using (Stream reqst = req.GetRequestStream())
{
reqst.Write(buffer, 0, buffer.Length);
reqst.Close();
}
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
string result;
using (Stream resst = res.GetResponseStream())
{
result = new StreamReader(resst, Encoding.Default).ReadToEnd();
resst.Close();
}
Console.WriteLine(result);
}
PostData = ""//太长了我就不写了;
url = "http://10.142.13.61/website/system/condition/selchoice.aspx?int_id=17071&url=pmreport/rep2002/GPRS性能报表";
buffer = Encoding.UTF8.GetBytes(PostData);
HttpWebRequest req1; req1 = (HttpWebRequest)WebRequest.Create(url);
req1.Method = "POST"; req1.Timeout = 50000;
req1.ContentType = "application/x-www-form-urlencoded";
req1.ContentLength = buffer.Length;
req1.CookieContainer = cookie;
try
{
req.ContentLength = buffer.Length;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
using (Stream reqst = req1.GetRequestStream())
{
reqst.Write(buffer, 0, buffer.Length); }
HttpWebResponse resp = null; Stream ress = null; StreamReader reader = null;
try
{
using (HttpWebResponse res = (HttpWebResponse)req1.GetResponse())
{
string result;
Console.WriteLine(req1.RequestUri.ToString());
using (Stream resst = res.GetResponseStream())
{
result = new StreamReader(resst, Encoding.Default).ReadToEnd();
}
Console.WriteLine(result);
}
} catch (WebException ex)
{
Console.WriteLine(ex.ToString());
}
CookieContainer cookie = new CookieContainer();
string PostData = "__VIEWSTATE=dDwtNjMzMTkyMjIxOzs%2BKynjHA9NUemN0NbJdLlTGyFrUQs%3D&UserID=tjnmc%5Cchaihua&UserPass=Tjnmc%232006&ButtonSubmit=+";
string url = "http://10.142.13.61/website/default.aspx";
byte[] buffer;
buffer = Encoding.UTF8.GetBytes(PostData);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = buffer.Length;
req.CookieContainer = cookie; req.Timeout = 50000;
using (Stream reqst = req.GetRequestStream())
{
reqst.Write(buffer, 0, buffer.Length);
reqst.Close();
}
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
string result;
using (Stream resst = res.GetResponseStream())
{
result = new StreamReader(resst, Encoding.Default).ReadToEnd();
resst.Close();
}
Console.WriteLine(result);
}
PostData = ""//太长了我就不写了;
url = "http://10.142.13.61/website/system/condition/selchoice.aspx?int_id=17071&url=pmreport/rep2002/GPRS性能报表";
buffer = Encoding.UTF8.GetBytes(PostData);
HttpWebRequest req1; req1 = (HttpWebRequest)WebRequest.Create(url);
req1.Method = "POST"; req1.Timeout = 50000;
req1.ContentType = "application/x-www-form-urlencoded";
req1.ContentLength = buffer.Length;
req1.CookieContainer = cookie;
try
{
req.ContentLength = buffer.Length;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
using (Stream reqst = req1.GetRequestStream())
{
reqst.Write(buffer, 0, buffer.Length); }
HttpWebResponse resp = null; Stream ress = null; StreamReader reader = null;
try
{
using (HttpWebResponse res = (HttpWebResponse)req1.GetResponse())
{
string result;
Console.WriteLine(req1.RequestUri.ToString());
using (Stream resst = res.GetResponseStream())
{
result = new StreamReader(resst, Encoding.Default).ReadToEnd();
}
Console.WriteLine(result);
}
} catch (WebException ex)
{
Console.WriteLine(ex.ToString());
}
public static string GetPage(string url, string postData, string encodeType, out string err)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null; HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.GetEncoding(encodeType);
byte[] data = encoding.GetBytes(postData);
// 准备请求...
try
{
// 设置参数
request = WebRequest.Create(url + postData) as HttpWebRequest; request.CookieContainer = new CookieContainer();
request.AllowAutoRedirect = true;
request.Method = "POST";
//request.ContentType = "application/x-www-form-urlencoded";
//request.ContentLength = data.Length;
//outstream = request.GetRequestStream();
//outstream.Write(data, 0, data.Length);
//outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse; foreach (Cookie cookie in response.Cookies)
{
string str = cookie.Name + " : " + cookie.Value + "\n";
} instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
string content = sr.ReadToEnd();
err = string.Empty;
return content;
}
catch (Exception ex)
{
err = ex.Message;
return string.Empty;
}
}
调用方法:
string xml = WebCatcher.GetPage(serviceUrl, postData, "gb2312", out err);