本机直接上网时,请参看
获取远程网页的内容之一(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)
分享到:
相关推荐
asp.net下获取远程网页的内容之二(downmoon原创)
获取远程网页的内容之一(downmoon原创)
asp.net中获取远程网页的内容之一(downmoon原创)
在IE中调用javascript打开Excel的代码(downmoon原作)
通用分页控件c#源码(downmoon收集) 采用工厂模式,提供标准化接口!支持 DataGrid 及 Repeater分页使用方法:新建两个解决方案 一为Pager,一为webtest 下载后请将两个解决方案合并一下,即新的解决方案包括两个...
sqlserver 存储过程中的top+变量使用分析(downmoon) ,需要的朋友可以参考下。
在某种程度上,有了它,我们再也不用为不能全面及时检测众多浏览器和五花八门的js/css不兼容性而痛不欲生了。...http://blog.csdn.net/downmoon/archive/2010/10/17/5946465.aspx 欢迎联系邀月 3w@live.cn
由于微软在vs2005 vsts团队开发版中集成了sql 2005 express,而在SQL 2005中又集成了vs2005 Express,,所以当很多用户同时安装vs2005团队开发?...sql 2005企业版(downmoon)时,就会出现数据库连接失败的case
在使用vs.php+ sourcesafe管理代码时,发现有时候并不能从vs.net IDE中正确获取phpproj文件下的所有文件。但从sourcesafe IDE下却可以。
在上一篇文章中, UML常见工具之NetBeans(downmoon) 简要介绍了netBeansIDE的UML工具,今天再来看一下更常用的powerDesigner,相信这个工具大多数人不陌生。目前版本是15。真的很感谢Sybase,可以说PowerDesigner...
此源码有问题,请下载downmoon提供的修正版!非常抱歉! http://download.csdn.net/source/2434932
Winform下的分页控件。3w@live.cn。详细说明,请看文章:http://blog.csdn.net/downmoon/archive/2011/02/10/6177224.aspx
讲座内容: Profie 是ASP.NET 2.0的重要特性之一,而ASP.NET AJAX提出了Profile Service,使开发人员能够方便地在客户端以AJAX的方式来处理Profile信息。这节课我们将来了解这个ProfileService简单的功能细节以及...