.net中如何获取网页内容,下面给出C#版本的函数,关键代码如下:
1、引入namespace
using System.Net; using System.IO; using System.Text;
2、函数代码:
/// <summary> /// 返回URL内容,带POST数据提交 /// </summary> /// <param name="url"></param> /// <param name="data"></param> /// <param name="method">GET/POST(默认)</param> /// <param name="dataEncoding">编码方式(默认utf-8)</param> /// <param name="timeout">超时时间(以毫秒为单位)</param> /// <returns></returns> public static string HttpRequest(string url, string data, string method, string dataEncoding, int timeout) { string res = string.Empty; if (string.IsNullOrEmpty(dataEncoding)) dataEncoding = "utf-8"; Encoding encoding = Encoding.GetEncoding(dataEncoding); //请求 WebRequest webRequest = null; Stream postStream = null; //响应 WebResponse webResponse = null; StreamReader streamReader = null; try { if (method == "GET") { url = url + '?' + data; } //请求 webRequest = WebRequest.Create(url); webRequest.Method = string.IsNullOrEmpty(method) ? "POST" : method; webRequest.Timeout = timeout; if (method == "POST") { byte[] postData = encoding.GetBytes(data); webRequest.ContentLength = postData.Length; postStream = webRequest.GetRequestStream(); postStream.Write(postData, 0, postData.Length); } //响应 webResponse = webRequest.GetResponse(); streamReader = new StreamReader(webResponse.GetResponseStream(), encoding); res = streamReader.ReadToEnd(); } catch (WebException ex) { using (HttpWebResponse response = (HttpWebResponse)ex.Response) { using (Stream responseStream = response.GetResponseStream()) { res = new StreamReader(responseStream).ReadToEnd(); } } } catch (Exception) { } finally { if (postStream != null) { postStream.Close(); } if (streamReader != null) { streamReader.Close(); } if (webResponse != null) { webResponse.Close(); } } return res; }
3、调用示例:
Get:HttpRequest("http://test.com/request.aspx","user=aa&pwd=bbb","GET",null,30)
关键类:Encoding,WebRequest,Stream,WebResponse,StreamReader