InternetOpen/InternetConnect/函数

转自http://hi.baidu.com/alalmn/blog/item/17229d99ebe18e046e068c90.html

InternetOpen 函数

参数说明


  1、sAgent

 

  指定调用 WinINet 函数的应用程序或入口。该入口用作HTTP协议中用户代理项。一般为“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”至于为什么,不知道。

 

  2、lAccessType

 

  访问要求类型,该参数可为下列值之一,基本就是选择代理或者不选择代理。数据类型为下面4种。

 

  INTERNET_OPEN_TYPE_DIRECT 解析所有本地主机;

 

  INTERNET_OPEN_TYPE_PRECONFIG 返回注册表中代理或直接的配置;

 

  INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 返回注册表中代理或直接的配置,并防止对Microsoft Jscript 或 INS文件的使用;

 

  INTERNET_OPEN_TYPE_PROXY 为代理传递请求,除非代理提供了旁路列表且解析的名字可以绕过代理;此时,函数使用INTERNET_OPEN_TYPE_DIRECT。

 

  3、sProxyName

 

  指定了当lAccessType类型为INTERNET_OPEN_TYPE_PROXY时,代理服务器的名字。

 

  不要使用一个空的字符串,因为,该函数将使用它作为代理的名字。WinINet函数仅能识别OERN类型的代理和TIS网关。如果有安装IE,这些函数也同样支持SOCKS代理。FTP请求可由CERN类型代理或转换为HTTP请求,或使用InternetOpenUrl函数实现。

 

  如果lAccessType类型未被设置为INTERNET_OPEN_TYPE_PROXY,该参数将被忽略且为NULL。

 

  sProxyBypass

 

  指向一个字符串,它指定一个可选的主机名列表或IP地址,列表可包括未知元素。

 

  lFlags

 

  该参数可为下列值的任意组合:

 

  INTERNET_FLAG_ASYNC 仅能用于作用在该函数返回的句柄的子句柄上的异步请求。

 

  INTERNET_FLAG_FROM_CACHE 不做网络请求。所有的实体都由缓存返回。如果请求条目不在缓存中,一个适当的错误将返回。

 

  INTERNET_FLAG_OFFLINE 与 INTERNET_FLAG_FROM_CACHE 一样。

 

  

返回值


  成功:返回一个有效的句柄,该句柄将由应用程序传递给接下来的WinINet函数。

 

  失败:返回NULL。

 

  

备注


  该函数是第一个由应用程序调用的 WinINet 函数。它告诉 Internet DLL 初始化内部数据结构并准备接收应用程序之后的其他调用。当应用程序结束使用 Internet 函数时,应调用 InternetCloseHandle 函数来释放与之相关的资源。

 

  应用程序可以对该函数进行任意次数的调用,不过在一般情况下一次调用就已经足够了。如果要调用多次该函数,应用程序则有必要定义独立的函数实例的行为,诸如不同的代理服务器等。

 

 

InternetConnect 函数

所处动态链接库的文件名:WinINet.dll
返回值类型:整数型,返回的是Internet的链接句柄
参数<1>的名称为“hInternet”,类型为“整数型”。就是Internetopen的句柄
参数<2>的名称为“lpszServerName”,类型为“文本型”。域名
参数<3>的名称为“nServerPort”,类型为“整数型”。服务器端口
参数<4>的名称为“lpszUserName”,类型为“文本型”。用户名普通访问网页时都为空
参数<5>的名称为“lpszPassword”,类型为“文本型”。密码普通访问网页时都为空
参数<6>的名称为“dwService”,类型为“整数型”。INTERNET_SERVICE_HTTP
参数<7>的名称为“dwFlags”,类型为“整数型”。0
参数<8>的名称为“dwContext”,类型为“整数型”。0

返回一个句柄。如果返回句柄=0。要释放Internetopen这个句柄。

 

 

HttpOpenRequest 函数

所处动态链接库的文件名:WinINet.dll
 返回创建请求的句柄。
 参数<1>的名称为“hConnect”,类型为“整数型”。就是Internet的连接句柄
 参数<2>的名称为“lpszVerb”,类型为“文本型”。访问方式。在网页里只有get和post两种方法
 参数<3>的名称为“lpszObjectName”,类型为“文本型”。页面的地址
 参数<4>的名称为“lpszVersion”,类型为“文本型”。协议的版本“HTTP/1.1”现在通用的是这样。貌似听说过2.0,但是不懂是啥意思。
 参数<5>的名称为“lpszReferer”,类型为“文本型”。引用页,抓包得到的refer
 参数<6>的名称为“lplpszAcceptTypes”,类型为“文本型”。
 参数<7>的名称为“dwFlags”,类型为“整数型”。2147483648
 参数<8>的名称为“dwContext”,类型为“整数型”。0

如果创建失败。需要释放Internetopen句柄和Internetconnect句柄

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB中的POST回调函数可以通过Wininet.dll库中的InternetOpenInternetConnect、HttpOpenRequest、HttpSendRequest等函数来实现。具体步骤如下: 1. 使用InternetOpen函数初始化一个会话句柄。 2. 使用InternetConnect函数连接到服务器。 3. 使用HttpOpenRequest函数创建一个HTTP请求句柄。 4. 使用HttpSendRequest函数发送HTTP请求。 5. 使用InternetReadFile函数读取服务器返回的数据。 6. 使用InternetCloseHandle函数关闭会话句柄、连接句柄和请求句柄。 以下是一个简单的VB代码示例: ``` Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long Private Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hHttpSession As Long, ByVal sVerb As String, ByVal sObjectName As String, ByVal sVersion As String, ByVal sReferer As String, ByVal lAcceptTypes As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long Private Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal sOptional As String, ByVal lOptionalLength As Long) As Long Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer Private Sub PostRequest() Dim hInternetSession As Long Dim hHttpConnection As Long Dim hHttpRequest As Long Dim sServerName As String Dim sObjectName As String Dim sPostData As String Dim sHeaders As String Dim lBytesWritten As Long Dim lBytesRead As Long Dim sResponse As String ' 初始化会话句柄 hInternetSession = InternetOpen("VB POST Request", 0, vbNullString, vbNullString, 0) ' 连接到服务器 sServerName = "www.example.com" hHttpConnection = InternetConnect(hInternetSession, sServerName, 80, vbNullString, vbNullString, 3, 0, 0) ' 创建HTTP请求句柄 sObjectName = "/post.php" hHttpRequest = HttpOpenRequest(hHttpConnection, "POST", sObjectName, "HTTP/1.1", vbNullString, 0, 0, 0) ' 设置POST数据和请求头 sPostData = "name=value" sHeaders = "Content-Type: application/x-www-form-urlencoded" & vbCrLf & "Content-Length: " & Len(sPostData) ' 发送HTTP请求 HttpSendRequest hHttpRequest, sHeaders, Len(sHeaders), sPostData, Len(sPostData) ' 读取服务器返回的数据 sResponse = "" Do Dim sBuffer As String sBuffer = Space(1024) InternetReadFile hHttpRequest, sBuffer, Len(sBuffer), lBytesRead sResponse = sResponse & Left(sBuffer, lBytesRead) Loop While lBytesRead > 0 ' 关闭句柄 InternetCloseHandle hHttpRequest InternetCloseHandle hHttpConnection InternetCloseHandle hInternetSession ' 输出服务器返回的数据 MsgBox sResponse End Sub ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值