寻找高手,解决问题 在网上有一个PHP文件,返回的格式是XML,之前我们查询的东西都是在本地查询,现在要用.net去查询网上的PHP文件,且要传参,各位帮帮忙,小弟这里谢过了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是采集页面default.cs private System.Net.CookieContainer cookie = new System.Net.CookieContainer();string data="id=2&title=tcd"; //这里是参数 string result = HttpHelper.GetHtml("http://www.***.com/b1.php", data, false, cookie);//result应该就是你想要得到的xml了HttpHelper.csprivate static Encoding encoding = Encoding.GetEncoding("gb2312");#region 获取HTML /// <summary> /// 获取HTML /// </summary> /// <param name="url">地址</param> /// <param name="postData">post 提交的字符串</param> /// <param name="isPost">是否是post</param> /// <param name="cookieContainer">CookieContainer</param> /// <returns>html </returns> public static string GetHtml(string url, string postData, bool isPost, CookieContainer cookieContainer) { if (string.IsNullOrEmpty(postData)) { return GetHtml(url, cookieContainer); } Thread.Sleep(NetworkDelay);//等待 currentTry++; HttpWebRequest httpWebRequest = null; HttpWebResponse httpWebResponse = null; try { byte[] byteRequest = Encoding.Default.GetBytes(postData); httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); httpWebRequest.CookieContainer = cookieContainer; httpWebRequest.ContentType = contentType; httpWebRequest.ServicePoint.ConnectionLimit = maxTry; httpWebRequest.Referer = url; httpWebRequest.Accept = accept; httpWebRequest.UserAgent = userAgent; httpWebRequest.Method = isPost ? "POST" : "GET"; httpWebRequest.ContentLength = byteRequest.Length; Stream stream = httpWebRequest.GetRequestStream(); stream.Write(byteRequest, 0, byteRequest.Length); stream.Close(); httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); Stream responseStream = httpWebResponse.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, encoding); string html = streamReader.ReadToEnd(); streamReader.Close(); responseStream.Close(); currentTry = 0; httpWebRequest.Abort(); httpWebResponse.Close(); return html; } catch (Exception e) { //Console.ForegroundColor = ConsoleColor.Red; //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message); //Console.ForegroundColor = ConsoleColor.White; if (currentTry <= maxTry) { GetHtml(url, postData, isPost, cookieContainer); } currentTry--; if (httpWebRequest != null) { httpWebRequest.Abort(); } if (httpWebResponse != null) { httpWebResponse.Close(); } return string.Empty; } } /// <summary> /// 获取HTML /// </summary> /// <param name="url">地址</param> /// <param name="cookieContainer">CookieContainer</param> /// <returns>HTML</returns> public static string GetHtml(string url, CookieContainer cookieContainer) { Thread.Sleep(NetworkDelay); currentTry++; HttpWebRequest httpWebRequest = null; HttpWebResponse httpWebResponse = null; try { httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); httpWebRequest.CookieContainer = cookieContainer; httpWebRequest.ContentType = contentType; httpWebRequest.ServicePoint.ConnectionLimit = maxTry; httpWebRequest.Referer = url; httpWebRequest.Accept = accept; httpWebRequest.UserAgent = userAgent; httpWebRequest.Method = "GET"; httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); Stream responseStream = httpWebResponse.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, encoding); string html = streamReader.ReadToEnd(); streamReader.Close(); responseStream.Close(); currentTry--; httpWebRequest.Abort(); httpWebResponse.Close(); return html; } catch (Exception e) { //Console.ForegroundColor = ConsoleColor.Red; //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message); //Console.ForegroundColor = ConsoleColor.White; if (currentTry <= maxTry) { GetHtml(url, cookieContainer); } currentTry--; if (httpWebRequest != null) { httpWebRequest.Abort(); } if (httpWebResponse != null) { httpWebResponse.Close(); } return string.Empty; } } /// <summary> /// 获取HTML /// </summary> /// <param name="url">地址</param> /// <returns>HTML</returns> public static string GetHtml(string url) { return GetHtml(url, cc); } /// <summary> /// 获取HTML /// </summary> /// <param name="url">地址</param> /// <param name="postData">提交的字符串</param> /// <param name="isPost">是否是POST</param> /// <returns>HTML</returns> public static string GetHtml(string url, string postData, bool isPost) { return GetHtml(url, postData, isPost, cc); } /// <summary> /// 获取字符流 /// </summary> /// <param name="url">地址</param> /// <param name="cookieContainer">cookieContainer</param> /// <returns>Stream</returns> public static Stream GetStream(string url, CookieContainer cookieContainer) { //Thread.Sleep(delay); currentTry++; HttpWebRequest httpWebRequest = null; HttpWebResponse httpWebResponse = null; try { httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); httpWebRequest.CookieContainer = cookieContainer; httpWebRequest.ContentType = contentType; httpWebRequest.ServicePoint.ConnectionLimit = maxTry; httpWebRequest.Referer = url; httpWebRequest.Accept = accept; httpWebRequest.UserAgent = userAgent; httpWebRequest.Method = "GET"; httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); Stream responseStream = httpWebResponse.GetResponseStream(); currentTry--; //httpWebRequest.Abort(); //httpWebResponse.Close(); return responseStream; } catch (Exception e) { //Console.ForegroundColor = ConsoleColor.Red; //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message); //Console.ForegroundColor = ConsoleColor.White; if (currentTry <= maxTry) { GetHtml(url, cookieContainer); } currentTry--; if (httpWebRequest != null) { httpWebRequest.Abort(); } if (httpWebResponse != null) { httpWebResponse.Close(); } return null; } } #endregion byte [] postData = Encoding.ASCII.GetBytes(param);//参数 "?"后面的一串字符串 request = (HttpWebRequest)WebRequest.Create(url);//网络地址 request.AllowWriteStreamBuffering = true; //request.Connection = "KeepAlive"; //request.KeepAlive //request.CookieContainer.Add(Cookies); stream = request.GetRequestStream(); stream.Write(postData, 0, postData.Length); stream.Close(); response = (HttpWebResponse)request.GetResponse(); stream = response.GetResponseStream(); 最小化时完美的隐藏 C# label如何换行 Exchange Server 2003邮件监控问题 控制只窗体显示一次 那位老大可以提供这样的一个控件,或者指导怎么做:类似个文本框,要求可以输入 年:月:日:小时:分钟:秒 c# word 文件...printout的時候..可以不要那個xps檔嗎? 关于richTextBox的字体问题 ★★★调试好的c# .ne程序,在网站的二级目录下怎么正常运行????? C#如何获取PPT母版 DataAdapter 不能删除记录, 程序点关闭后到任务栏 asp.net Extjs
default.cs
private System.Net.CookieContainer cookie = new System.Net.CookieContainer();
string data="id=2&title=tcd"; //这里是参数
string result = HttpHelper.GetHtml("http://www.***.com/b1.php", data, false, cookie);
//result应该就是你想要得到的xml了
HttpHelper.cs
private static Encoding encoding = Encoding.GetEncoding("gb2312");
#region 获取HTML
/// <summary>
/// 获取HTML
/// </summary>
/// <param name="url">地址</param>
/// <param name="postData">post 提交的字符串</param>
/// <param name="isPost">是否是post</param>
/// <param name="cookieContainer">CookieContainer</param>
/// <returns>html </returns>
public static string GetHtml(string url, string postData, bool isPost, CookieContainer cookieContainer)
{
if (string.IsNullOrEmpty(postData))
{
return GetHtml(url, cookieContainer);
} Thread.Sleep(NetworkDelay);//等待 currentTry++; HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
try
{
byte[] byteRequest = Encoding.Default.GetBytes(postData); httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentType = contentType;
httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
httpWebRequest.Referer = url;
httpWebRequest.Accept = accept;
httpWebRequest.UserAgent = userAgent;
httpWebRequest.Method = isPost ? "POST" : "GET";
httpWebRequest.ContentLength = byteRequest.Length; Stream stream = httpWebRequest.GetRequestStream();
stream.Write(byteRequest, 0, byteRequest.Length);
stream.Close(); httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, encoding);
string html = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
currentTry = 0; httpWebRequest.Abort();
httpWebResponse.Close(); return html;
}
catch (Exception e)
{
//Console.ForegroundColor = ConsoleColor.Red;
//Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
//Console.ForegroundColor = ConsoleColor.White; if (currentTry <= maxTry)
{
GetHtml(url, postData, isPost, cookieContainer);
}
currentTry--; if (httpWebRequest != null)
{
httpWebRequest.Abort();
} if (httpWebResponse != null)
{
httpWebResponse.Close();
}
return string.Empty;
}
}
/// <summary>
/// 获取HTML
/// </summary>
/// <param name="url">地址</param>
/// <param name="cookieContainer">CookieContainer</param>
/// <returns>HTML</returns>
public static string GetHtml(string url, CookieContainer cookieContainer)
{
Thread.Sleep(NetworkDelay); currentTry++;
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
try
{ httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentType = contentType;
httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
httpWebRequest.Referer = url;
httpWebRequest.Accept = accept;
httpWebRequest.UserAgent = userAgent;
httpWebRequest.Method = "GET"; httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, encoding);
string html = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close(); currentTry--; httpWebRequest.Abort();
httpWebResponse.Close(); return html;
}
catch (Exception e)
{
//Console.ForegroundColor = ConsoleColor.Red;
//Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
//Console.ForegroundColor = ConsoleColor.White; if (currentTry <= maxTry)
{
GetHtml(url, cookieContainer);
} currentTry--; if (httpWebRequest != null)
{
httpWebRequest.Abort();
} if (httpWebResponse != null)
{
httpWebResponse.Close();
}
return string.Empty;
}
}
/// <summary>
/// 获取HTML
/// </summary>
/// <param name="url">地址</param>
/// <returns>HTML</returns>
public static string GetHtml(string url)
{
return GetHtml(url, cc);
}
/// <summary>
/// 获取HTML
/// </summary>
/// <param name="url">地址</param>
/// <param name="postData">提交的字符串</param>
/// <param name="isPost">是否是POST</param>
/// <returns>HTML</returns>
public static string GetHtml(string url, string postData, bool isPost)
{
return GetHtml(url, postData, isPost, cc);
}
/// <summary>
/// 获取字符流
/// </summary>
/// <param name="url">地址</param>
/// <param name="cookieContainer">cookieContainer</param>
/// <returns>Stream</returns>
public static Stream GetStream(string url, CookieContainer cookieContainer)
{
//Thread.Sleep(delay); currentTry++;
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null; try
{ httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentType = contentType;
httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
httpWebRequest.Referer = url;
httpWebRequest.Accept = accept;
httpWebRequest.UserAgent = userAgent;
httpWebRequest.Method = "GET"; httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
currentTry--; //httpWebRequest.Abort();
//httpWebResponse.Close(); return responseStream;
}
catch (Exception e)
{
//Console.ForegroundColor = ConsoleColor.Red;
//Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
//Console.ForegroundColor = ConsoleColor.White; if (currentTry <= maxTry)
{
GetHtml(url, cookieContainer);
} currentTry--; if (httpWebRequest != null)
{
httpWebRequest.Abort();
} if (httpWebResponse != null)
{
httpWebResponse.Close();
}
return null;
}
}
#endregion
byte [] postData = Encoding.ASCII.GetBytes(param);//参数 "?"后面的一串字符串
request = (HttpWebRequest)WebRequest.Create(url);//网络地址
request.AllowWriteStreamBuffering = true;
//request.Connection = "KeepAlive";
//request.KeepAlive
//request.CookieContainer.Add(Cookies); stream = request.GetRequestStream();
stream.Write(postData, 0, postData.Length);
stream.Close(); response = (HttpWebResponse)request.GetResponse();
stream = response.GetResponseStream();