本机直接上网时,请参看
获取远程网页的内容之一(downmoon原创)
本文仅针AD下代理上网的情况:
代码如下:
1、定义变量:
<!-- .lineBorderBlue1 { BORDER-TOP: #999999 1px groove; BORDER-BOTTOM: #999999 1px groove; BORDER-LEFT: #999999 1px groove; BORDER-RIGHT: #999999 1px groove; background-color:#efefef; } -->
定义变量
#region 定义变量 private string strFireWallIP![]() ... { get ![]() ... { return System.Configuration.ConfigurationSettings.AppSettings[ " strFireWallIP " ]; } } private string strFireWallPort![]() ... { get ![]() ... { return System.Configuration.ConfigurationSettings.AppSettings[ " strFireWallPort " ]; } } private string strUID![]() ... { get ![]() ... { return System.Configuration.ConfigurationSettings.AppSettings[ " strUID " ]; } } private string strPWD![]() ... { get ![]() ... { return System.Configuration.ConfigurationSettings.AppSettings[ " strPWD " ]; } } private string strDomain![]() ... { get ![]() ... { return System.Configuration.ConfigurationSettings.AppSettings[ " strDomain " ]; } } #endregion
|
方法:
获取指定远程网页内容
/**/
/// <summary> /// 获取指定远程网页内容 /// </summary> /// <paramname="strUrl"> 所要查找的远程网页地址 </param> /// <returns></returns>
//
[WebMethod(Description="获取指定远程网页内容。")]
public
string
getPageContent(
string
strUrl)![]()
...
{ string strResult = "" ; this .CurrentUrl = strUrl; if ( this .CurrentUrl.ToLower().StartsWith( " http:// " ) == false ) this .CurrentUrl = " http:// " + this .CurrentUrl; try ![]() ... { contentBytes = GetHtmlByte(CurrentUrl);![]() } catch (Exceptionerr)![]() ... { strResult = " 请求错误: " + err.Message; } if (contentBytes == null )![]() ... { throw new Exception( " 没有获得返回值 " ); } strResult = getStringFromByteArray(contentBytes,Encoding.UTF8); return strResult; }
|
获取指定远程网页元素字节数组::
获取指定远程网页元素字节数组
#region 获取指定远程网页元素字节数组 ![]() /**/ /// <summary> /// 获取指定远程网页元素字节数组 /// </summary> /// <paramname="strUrl"> 所要查找的远程网页地址 </param> /// <returns></returns> private byte []GetHtmlByte( string strUrl)![]() ... { string strPara = (strUrl.IndexOf( " ? " ) >= 0 ? strUrl.Substring(strUrl.IndexOf( " ? " ) + 1 ): "" ); System.Text.Encodingencoding = new UTF8Encoding(); byte []byte1 = encoding.GetBytes(strPara); byte []byteReturn = new byte [ 10000000 ]; if (strUrl.Trim().ToLower().StartsWith( " http:// " ) == false )![]() ... { strUrl = " http:// " + strUrl; } HttpWebRequestmyHttpWebRequest = (HttpWebRequest)WebRequest.Create(strUrl); myHttpWebRequest.AllowAutoRedirect = true ; myHttpWebRequest.KeepAlive = true ; myHttpWebRequest.UserAgent = " Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0;.NETCLR1.1.4322) " ; System.Net.WebProxyproxy = new WebProxy(strFireWallIP + " : " + strFireWallPort, true ); // proxy=(WebProxy)System.Net.GlobalProxySelection.Select; System.Net.NetworkCredentialmyCredential = new NetworkCredential(strUID,strPWD,strDomain); proxy.Credentials = myCredential; myHttpWebRequest.Proxy = proxy;![]() ![]() HttpWebResponsemyHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); byte []bRead = new byte [ 1024 ]; int lngCount = 1 ; int totalLen = 0 ; StreamrecWeb = myHttpWebResponse.GetResponseStream(); lngCount = recWeb.Read(bRead, 0 , 1024 ); while (lngCount > 0 )![]() ... { Array.Copy(bRead, 0 ,byteReturn,totalLen,lngCount); totalLen += lngCount; lngCount = recWeb.Read(bRead, 0 , 1024 ); } recWeb.Close(); byte []byteGets = new byte [totalLen]; Array.Copy(byteReturn, 0 ,byteGets, 0 ,totalLen); byteReturn = null ; bRead = null ;![]() return byteGets; } #endregion
![]()
|
转换指定字节数组为字符串::
转换指定字节数组为字符串
#region 转换指定字节数组为字符串 ![]() /**/ /// <summary> /// 转换指定字节数组为字符串 /// </summary> /// <paramname="ByteGet"> 字节数组Byte[] </param> /// <paramname="myEncoding"> 编码方式 </param> /// <returns></returns> private static string getStringFromByteArray(Byte[]ByteGet,EncodingmyEncoding)![]() ... { int i,lngCount; StringBuilderaTemp = new StringBuilder( 10000 ); lngCount = ByteGet.Length; for (i = 0 ;i < lngCount;i += 10000 )![]() ... { aTemp.Append(myEncoding.GetString(ByteGet,i,(lngCount >= i + 10000 ? 10000 :lngCount - i))); } if (i <= lngCount)![]() ... { aTemp.Append(myEncoding.GetString(ByteGet,i,(lngCount - i))); } return aTemp.ToString(); } ![]() #endregion
|
借用这个,写了个抽取中国天气网预报的服务!很爽!
在webForm中WebRequest/WebClient/WebBrowser获取远程页面源码的三种方式(downmoon)



}

95

被折叠的 条评论
为什么被折叠?



