Inet控件.docx

上传人:b****8 文档编号:9239149 上传时间:2023-02-03 格式:DOCX 页数:10 大小:21.63KB
下载 相关 举报
Inet控件.docx_第1页
第1页 / 共10页
Inet控件.docx_第2页
第2页 / 共10页
Inet控件.docx_第3页
第3页 / 共10页
Inet控件.docx_第4页
第4页 / 共10页
Inet控件.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Inet控件.docx

《Inet控件.docx》由会员分享,可在线阅读,更多相关《Inet控件.docx(10页珍藏版)》请在冰豆网上搜索。

Inet控件.docx

Inet控件

VBInet控件(又叫InternetTransfer控件)的详细用法

(1)

2008-10-3115:

58:

09  作者:

sirius  来源:

互联网  浏览次数:

1140  文字大小:

【大】【中】【小】

简介:

Inet控件也叫InternetTransfer控件,这个控件封装了http协议以及ftp协议,使用起来非常方便。

所以大家经常使用。

然而大家通常使用的只是其部分功能,接下来我们讲一下它的全部详细功能,看过之后你也许会有眼前一亮的感觉...

关键字:

VBInet控件(又叫InternetTransfer控件)详细用法

Inet控件也叫InternetTransfer控件,这个控件封装了http协议以及ftp协议,使用起来非常方便。

所以大家经常使用。

然而大家通常使用的只是其部分功能,接下来我们讲一下它的全部详细功能,看过之后你也许会有眼前一亮的感觉。

会猛然觉得我们之前懂得的只是皮毛。

闲话少说,下面开讲:

InternetTransfer控件实现了两种广泛使用的Internet协议:

超文本传送协议(HyperTextTransferProtocol)(也就是HTTP)和文件传送协议(FileTransferProtocol)(即FTP)。

使用InternetTransfer控件可以通过OpenURL或Execute方法连接到任何使用这两个协议的站点并检索文件。

可以做到的大体方向

在应用程序中添加FTP浏览器。

创建自动从公共FTP站点下载文件的应用程序。

分析WorldWideWeb站点中的图形引用,并只下载图形。

提供以自定义格式显示从Web页获得的动态数据。

基本操作

InternetTransfer控件的功能依赖于将要使用的协议。

由于所支持的两种协议工作起来不尽相同,所能够进行的操作就依赖于正在使用的协议。

例如,GetHeader方法只能用于HTTP(HTML文档)协议。

然而,有些过程对两个协议是通用的。

最基本的,如果要使用任何一个协议,则必须:

将AccessType属性设置为合法的代理服务器。

用合法的URL调用OpenURL方法。

用合法的URL和协议支持的命令调用Execute方法。

用GetChunk方法从缓冲区获取数据。

设置AccessType属性:

使用代理服务器

为了与Internet建立任何形式的连接,必须确定计算机如何连接到Internet上。

如果在intranet上,可能需要提供代理服务器才能连接到Internet上。

简单地说,代理服务器是计算机和Internet之间的媒介。

intranet上所有需要连接到Internet上的计算机,都必须通过代理服务器。

代理行使intranet和Internet之间的防火墙功能,能够阻止非法的最终用户和外部请求,也就保护了intranet不受破坏。

要查找计算机中的代理设置值,请按照以下步骤执行:

打开控制面板的Internet选项。

在“Internet选项”对话框中,单击“连接”。

在“代理服务器”中,确认选中了“通过代理服务器连接”复选框。

如果选中了,则单击“设置”。

在该对话框中可以找到能够用于多种协议的代理服务器的名称。

如果没有定义代理服务器,请与系统管理员联系,以获得可用的代理服务器。

如果希望使用对话框中未列出的代理服务器,可将AccessType属性设置为icNamedProxy

(2)。

然后将Proxy属性设置为代理服务器的名称,如下面的代码所示:

Inet1.Proxy="myProxyName"

Inet1.AccessType=icNamedProxy

另一方面,如果希望使用缺省代理服务器(由计算机的注册表决定),则可以忽略Proxy属性,而只需将AccessType设置为icUseDefault(0)。

AccessType的设置值在下表中列出:

常数值描述

icUseDefault0(缺省)用作缺省。

控件使用注册表中的缺省设置访问Internet。

icDirect1直接连接Internet。

该控件可直接连接到Internet。

icNamedProxy2命名的代理服务器。

指示该控件使用Proxy属性确定的代理服务器。

调用OpenURL方法

设置完AccessType属性后,最基本的操作就是用合法的URL调用OpenURL方法。

使用OpenURL方法时,操作所得到的结果将依赖于目标URL。

例如下面的URL将返回在中找到的HTML文档:

'名为“Text1”的TextBox控件保存了

'该方法的结果。

Internet传输

'控件的名称是“Inet1”。

Text1.Text=Inet1.OpenURL("")

作为结果,TextBox控件保存了HTML源码,它看上去应和下图显示的相似:

 

在这种情况下,缺省操作返回的是URL定位的HTML文档。

然而,如果URL被改为指向文本文件,则将获得实际的文件。

例如,下面的代码:

Text1.Text=Inet1._

OpenURL("ftp:

//

将获得文件的实际文本,如下所示:

 

提示在使用OpenURL或Execute方法时,不需要设置Protocol属性。

InternetTransfer控件会自动按URL的协议部分确定的协议来设置。

最后,可以用包含附加数据的URL调用OpenURL方法。

例如,很多Web站点提供了搜索数据库的能力。

要搜索数据库,则需要在发送的URL中包含搜索条件。

例如下面的代码用条件“find=Maui”调用名为“search.exe”的搜索引擎。

DimstrURLAsString

strURL="

Text1.Text=Inet1.OpenURL(strURL)

如果搜索引擎找到了符合条件的内容,将合成一个HTML文档并携带适当的信息返回。

用OpenURL方法保存到文件

如果需要将通过OpenURL方法获取的数据保存到文件,可以使用Open、Put和Close语句,如下面的代码所示。

该示例先将获得的二进制文件传入Byte数组,然后将该数据保存到磁盘中:

DimstrURLAsString

DimbData()AsByte'数据变量

DimintFileAsInteger'可用文件变量

strURL=_

"ftp:

//xe"

intFile=FreeFile()'将intFile设置为未使用的文件

'OpenURL方法的结果首先传入Byte数组,

'然后将Byte数组保存到磁盘。

bData()=Inet1.OpenURL(strURL,icByteArray)

Open"C:

\Temp\Softlib.exe"ForBinaryAccessWrite_

As#intFile

Put#intFile,,bData()

Close#intFile

可用类似的过程将文本文件写入磁盘中,不同的只是不再需要Byte数组了,数据可以直接保存到文件中:

DimstrURLAsString'URL字符串

DimintFileAsInteger'可用文件变量

IntFile=FreeFile()

strURL=""

Open"c:

\temp\MSsource.txt"ForOutput_

As#IntFile

Write#IntFile,Inet1.OpenURL(strURL)

Close#IntFile

同步和异步传输

OpenURL方法以同步方式传输数据。

在这里,同步指的是传输操作未完成之前,不能执行其它过程。

这样数据传输就必须在执行其它代码之前完成。

而Execute方法以异步方式传输数据。

在调用Execute方法时,传输操作与其它过程无关。

这样,在调用Execute方法后,在后台接收数据的同时,即可同时执行其它代码。

对InternetTransfer控件的使用者来说这意味着什么?

简单地说,用OpenURL方法能够直接得到可保存到磁盘的数据流(如上所述),或者直接在TextBox控件中阅览(如果数据是文本格式的)。

从另一方面说,如果用Execute方法获取数据,则必须用StateChanged事件监视该控件的连接状态。

当达到适当的状态时,调用GetChunk方法从控件的缓冲区获取数据。

下面更详细地讨论这一操作。

在FPT协议中使用Execute方法

Execute方法具有四个参数:

url、operation、data和requestHeaders。

FTP操作只用到了operation参数和url参数,其中后者是可选的。

例如,要从远程计算机中得到一个文件,可用下面的代码:

Inet1.Execute"FTP:

//",_

"GETdisclaimer.txtC:

\Temp\Disclaimer.txt"

如果正在用FTP从匿名FTP服务器中获取文件,就应熟悉在服务器目录树中漫游的特定命令,以及将其中文件获取到本地的硬盘中的命令。

例如,要用FPT协议改变目录,应使用带有希望改变到的目录路径的“CD”命令。

对绝大多数通用操作,如将文件传入服务器,以及从服务器获取文件,Internet传输控件在Execute方法中使用了(与FTP)相同或相近的命令。

例如,下面的代码将“CD”命令作为Execute方法的参数以改变路径:

'txtURL文本框包含了要打开的路径。

'txtRemotePath文本框包含了要改变到的路径。

Inet1.ExecutetxtURL.Text,"CD"&txtRemotePath.Text

注意在Execute方法中使用FTP命令时,没有用到data和requestHeaders参数。

所有的操作和它们的参数都在operation参数中作为字符串进行传递;参数之间用空格进行分隔。

在下面的描述中,不要把“file1”和“file2”项与data和requestHeaders参数搞混。

FTP操作的语法是:

operationNamefile1file2

例如,要获取文件,在下面的代码中包含了操作的名称(“获取”),以及该操作所需的两个文件名:

'得到名为“Disclaimer.txt”的文件,并将其复制到

'C:

\Temp\Disclaimer.txt。

Inet1.Execute,_

"GETDisclaimer.txtC:

\Temp\Disclaimer.txt"

下表列出了该控件支持的FTP命令:

操作描述示例

CDfile1改变目录。

改变到由file1指定的目录中。

Execute,"CDdocs\mydocs"

CDUP改变到父目录。

功能与“CD..”相同。

Execute,"CDUP"

VBInet控件(又叫InternetTransfer控件)的详细用法

(2)

2008-10-3115:

58:

09  作者:

sirius  来源:

互联网  浏览次数:

1141  文字大小:

【大】【中】【小】

简介:

Inet控件也叫InternetTransfer控件,这个控件封装了http协议以及ftp协议,使用起来非常方便。

所以大家经常使用。

然而大家通常使用的只是其部分功能,接下来我们讲一下它的全部详细功能,看过之后你也许会有眼前一亮的感觉...

关键字:

VBInet控件(又叫InternetTransfer控件)详细用法

P>DELETEfile1删除由file1指定的文件。

Execute,"DELETEdiscard.txt"

DIR[file1]在由file1指定的目录中查找。

如果没有指定file1目录,则查找当前工作目录。

使用GetChunk方法返回数据。

Execute,"DIR/mydocs"

GETfile1file2获取由file1指定的远程文件,并创建由file2指定的新的本地文件。

Execute,_

"GETgetme.txtC:

\gotme.txt"

MKDIRfile1创建由file1指定的目录。

是否能够成功地执行,取决于用户在远程主机上的权限。

Execute,"MKDIR/myDir"

PUTfile1file2将由file1指定的本地文件,复制到由file2指定的远程主机文件中。

Execute,_

"PUTC:

\putme.txt/putme.txt"

PWD打印工作目录。

返回当前目录的名称。

用GetChunk方法返回数据。

Execute,"PWD"

QUIT结束当前连接。

Execute,"QUIT"

RECVfile1file2与GET相同。

Execute,_

"RECVgetme.txtC:

\gotme.txt"

RENAMEfile1file2文件重命名。

是否能够成功地执行,取决于用户在远程主机上的权限。

Execute,

"RENAMEold.txtnew.txt"

RMDIRfile1删除目录。

是否能够成功地执行,取决于用户在远程主机上的权限。

Execute,"RMDIRoldDir"

SENDfile1将文件复制到FTP站点。

(与PUT相同)Execute,_

"SENDC:

\putme.txt/putme.txt"

SIZEfile1返回由file1指定文件的大小。

Execute"SIZE/largefile.txt"

 

重点如果代理服务器是CERN代理服务器,就不允许使用直接的FTP连接(使用Execute方法)。

在这种情况下,要获得文件,则需使用带Open、Put和Close语句的OpenURL方法,就象前面“用OpenURL方法保存到文件”提到的那样。

还可以用OpenURL方法得到目录列表,即将目标目录作为URL,并调用该方法。

在HTTP协议上使用Execute方法

HTTP协议允许客户机用GET、HEAD、POST和PUT命令向服务器请求数据。

下表中列出了这些操作:

操作描述示例

GET获取url中命名的文件。

Execute""&_

"/Index.html","GET"

HEAD只获取URL属性中命名的文件的文件标头。

Execute,"HEAD"

POST方法提供附加数据(学过网页制作的或学过http协议的应该知道),以支持向远程主机的请求。

Execute,"POST",strFormData

PUT替换指定的URL中的数据。

Execute,"PUT","replace.htm"

 

通用网关接口和Execute方法

很多WorldWideWeb站点提供了搜索数据库的能力。

它是通过HTTP协议用通用网关接口(CGI)发送查询的能力完成的。

在这里不再讨论CGI了。

然而,如果对CGI比较了解,就可用Execute方法构造一个应用程序模拟WorldWideWeb站点的行为。

例如,下面的代码给出了典型的CGI查询字符串:

如下所示,用Execute方法也可以发送同样的查询:

DimstrURLAsString,strFormDataAsString

strURL="

strFormData="wd=ibiancheng"

Inet1.ExecutestrURL,"POST",strFormData

如果希望得到从服务器发回的结果(如上面的示例所示),就必须使用控件的GetChunk方法以获取作为结果的HTML文档。

在State事件中使用GetChunk方法

在从远程计算机下载数据时,将建立异步连接。

例如,在Execute方法中使用“获取”操作,将使服务器获取请求的文件。

当获取了整个文件之后,State参数将返回icResponseCompleted(12)。

在这时候,就可以用GetChunk方法从缓冲区中获取数据了。

下面的示例中给出了这种情况:

PrivateSubInet1_StateChanged(ByValStateAsInteger)

DimvtDataAsVariant'数据变量。

SelectCaseState

'...没有给出其它情况。

CaseicResponseCompleted'12

'打开文件用于写入。

OpentxtOperationForBinaryAccess_

WriteAs#intFile

'得到第一个大块。

注意:

指定Byte数组

'(icByteArray)以获取二进制文件。

vtData=Inet1.GetChunk(1024,icString)

DoWhileLenB(vtData)>0

Put#intFile,,vtData

'得到下一大块。

vtData=Inet1.GetChunk(1024,icString)

Loop

Put#intFile,,vtData

Close#intFile

EndSelect

EndSub

登录到FTP服务器

FTP服务器有两种:

公用的和私用的。

公用服务器,顾名思义,是对所有人开放的。

而私用服务器,除了该服务器的真正用户,其他人不能登录。

在这两种情况下,FTP协议都要求提供用户名和密码。

这两个参数用来验明用户,并允许(或禁止)进一步的操作。

要登录到公用服务器,通常的做法是以“匿名”登录(UserName="anonymous"),然后发送用户的电子邮件名称作为密码。

然而使用Internet传输控件这一过程还能够进一步简化。

按照缺省规定,如果没有提供UserName和Password属性值,该控件发送“匿名”作为UserName,用户的电子邮件名称作为Password。

如果要登录到私用服务器,只需适当地设置UserName、Password和URL属性,并调用Execute方法,如下面的示例所示:

WithInet1

.URL="ftp:

//ftp.someFTPS"

.UserName="JohnSmith"

.Password="mAuI&9$6"

.Execute,"DIR"'返回该目录。

.Execute,"CLOSE"'关闭连接。

EndWith

在调用Execute方法之后,FTP连接仍旧打开着。

这时可以继续使用Execute方法完成其它FTP操作,比如CD和GET。

如果会话已经完成,使用Execute方法执行CLOSE操作以关闭连接。

也可以通过改变URL属性,并调用OpenURL或Execute方法,自动关闭该连接,这样的操作会关闭当前FTP连接,并打开新的URL或IP。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1