搜档网
当前位置:搜档网 › WinHttp用法

WinHttp用法

https://www.sodocs.net/doc/1913144299.html,/f?ct=335675392&tn=baiduPostBrowser&sc=1718323778&z=184652195&pn=0&rn=30&lm=0&word=163200#1718323778'获取软件下载的真实地址!再谈获取Response.redirect重定向的URL!
https://www.sodocs.net/doc/1913144299.html,/thread-2818063-1-1.html'WinHttp方法
https://www.sodocs.net/doc/1913144299.html,/blog/posts/develop/page/3/'XMLHTTP方法
Dim XML As Object
Dim ReturnCode$(), Question$, Answer$
Set XML = CreateObject("WinHttp.WinHttpRequest.5.1")
XML.Option(4) = 13056 '这句未理解
XML.Option(6) = True '为True时,当请求的页面中有跳转时,抓取跳转页面信息.False相反不抓取
XML.Open "POST", url, False
XML.setRequestHeader "Referer", "xml://localhost/zhbb/default.asp"
XML.setRequestHeader "User-Agent", "Mozilla/4.0"
XML.setRequestHeader "Connection", "Keep-Alive"
XML.setRequestHeader "Content-Length", Len(Data)
XML.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
XML.SetTimeouts 60000, 60000, 60000, 3000 'resolveTimeout,connectTimeout,sendTimeout,receiveTimeout
resolveTimeout = 10000 '解析DNS名字的超时时间,10秒
connectTimeout = 10000 '建立Winsock连接的超时时间,10秒
sendTimeout = 120000 '发送数据的超时时间,120秒
receiveTimeout = 60000 '接收response的超时时间,60秒

XML.send
XML.WaitForResponse'等待返回内容'XMLHTTP中也可以使用
Text1.Text = Encode(XML.ResponseText)

Option()相关:
WinHttpRequestOption_UserAgentString = 0;
WinHttpRequestOption_URL = 1;
WinHttpRequestOption_URLCodePage = 2;
WinHttpRequestOption_EscapePercentInURL = 3;
WinHttpRequestOption_SslErrorIgnoreFlags = 4;
WinHttpRequestOption_SelectCertificate = 5;
WinHttpRequestOption_EnableRedirects = 6; '为True时,当请求的页面中有跳转时,抓取跳转页面信息.False相反不抓取
WinHttpRequestOption_UrlEscapeDisable = 7;
WinHttpRequestOption_UrlEscapeDisableQuery = 8;
WinHttpRequestOption_SecureProtocols = 9;
WinHttpRequestOption_EnableTracing = 10;
WinHttpRequestOption_RevertImpersonationOverSsl = 11;
WinHttpRequestOption_EnableHttpsToHttpRedirects = 12;
WinHttpRequestOption_EnablePassportAuthentication = 13;
WinHttpRequestOption_MaxAutomaticRedirects = 14;
WinHttpRequestOption_MaxResponseHeaderSize = 15;
WinHttpRequestOption_MaxResponseDrainSize = 16;
WinHttpRequestOption_EnableHttp1_1 = 17;
WinHttpRequestOption_EnableCertificateRevocationCheck = 18;

Enum WinHttpRequestAutoLogonPolicy;
AutoLogonPolicy_Always = 0;
AutoLogonPolicy_OnlyIfBypassProxy = 1;
AutoLogonPolicy_Never = 2;

Enum WinHttpRequestSslErrorFlags;
SslErrorFlag_UnknownCA = $100;
SslErrorFlag_CertWrongUsage = $200;
SslErrorFlag_CertCNInvalid = $1000;
SslErrorFlag_CertDateInvalid = $2000;
SslErrorFlag_Ignore_All = $3300;

Enum WinHttpRequestSecureProtocols;
SecureProtocol_SSL2 = 8;
SecureProtocol_SSL3 = 32;
SecureProtocol_TLS1 = 128;
SecureProtocol_ALL = 168;

Dispatch IWinHttpRequest; // IWinHttpRequest Interface
function Qu

eryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function SetProxy(ProxySetting:HTTPREQUEST_PROXY_SETTING; [ProxyServer:variant; BypassList:variant]);
function SetCredentials(UserName:BSTR; Password:BSTR; Flags:HTTPREQUEST_SETCREDENTIALS_FLAGS);
function Open(Method:BSTR; Url:BSTR; [Async:variant]);
function SetRequestHeader(Header:BSTR; Value:BSTR);
function GetResponseHeader(Header:BSTR): BSTR;
function GetAllResponseHeaders: BSTR;
function Send([Body:variant]);
property-get Status: I4;
property-get StatusText: BSTR;
property-get ResponseText: BSTR;
property-get ResponseBody: variant;
property-get ResponseStream: variant;
property-get Option(Option:WinHttpRequestOption): variant;
property-put Option(Option:WinHttpRequestOption; variant);
function WaitForResponse([Timeout:variant]): bool;
function Abort;
function SetTimeouts(ResolveTimeout:I4; ConnectTimeout:I4; SendTimeout:I4; ReceiveTimeout:I4);'设置响应时间(域名解析超时,连接超时,发送超时,接收超时)'毫秒计
function SetClientCertificate(ClientCertificate:BSTR);
function SetAutoLogonPolicy(AutoLogonPolicy:WinHttpRequestAutoLogonPolicy);

Interface IWinHttpRequestEvents; // IWinHttpRequestEvents Interface
GUID={F97F4E15-B787-4212-80D1-D380CBBF982E};
function OnResponseStart(Status:I4; ContentType:BSTR);
function OnResponseDataAvailable(Data:^^UI1);
function OnResponseFinished;
function OnError(ErrorNumber:I4; ErrorDescription:BSTR);

Class WinHttpRequest; // WinHttpRequest component
GUID={2087C2F4-2CEF-4953-A8AB-66779B670495};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function SetProxy(ProxySetting:HTTPREQUEST_PROXY_SETTING; [ProxyServer:variant; BypassList:variant]);
function SetCredentials(UserName:BSTR; Password:BSTR; Flags:HTTPREQUEST_SETCREDENTIALS_FLAGS);
function Open(Method:BSTR; Url:BSTR; [Async:variant]);
function SetRequestHeader(Header:BSTR; Value:BSTR);
function GetResponseHeader(Header:BSTR): BSTR;
function GetAllResponseHeaders: BSTR;
function Send([Body:variant]);
property-get Status: I4;


property-get StatusText: BSTR;
property-get ResponseText: BSTR;
property-get ResponseBody: variant;
property-get ResponseStream: variant;
property-get Option(Option:WinHttpRequestOption): variant;
property-put Option(Option:WinHttpRequestOption; variant);
function WaitForResponse([Timeout:variant]): bool;
function Abort;
function SetTimeouts(ResolveTimeout:I4; ConnectTimeout:I4; SendTimeout:I4; ReceiveTimeout:I4);
function SetClientCertificate(ClientCertificate:BSTR);
function SetAutoLogonPolicy(AutoLogonPolicy:WinHttpRequestAutoLogonPolicy);
function OnResponseStart(Status:I4; ContentType:BSTR);
function OnResponseDataAvailable(Data:^^UI1);
function OnResponseFinished;
function OnError(ErrorNumber:I4; ErrorDescription:BSTR);
方法 Description说明
Abort 中止一个WinHTTP的 发送方法。

GetAllResponseHeaders 检索所有的HTTP响应头。

GetResponseHeader 检索HTTP响应头。

Open 打开一个HTTP连接到HTTP资源。

Send 发送一个HTTP请求到HTTP服务器。

SetAutoLogonPolicy 设置当前自动登录策略 。

SetClientCertificate 选择一个客户端证书发送到一个安全的超文本传输协议(HTTPS)服务器。

SetCredentials 设置要使用的凭据与HTTP服务器,要么是原籍国或代理服务器。

SetProxy 设置代理服务器信息。

SetRequestHeader 添加,更改或删除一个HTTP请求标头。

SetTimeouts 指定以毫秒为单位,个人的时间超过了一个组件发送/接收操作。

WaitForResponse 指定的等待时间,以秒为一个异步传送方法来完成的值,SetTimeouts。

该WinHttpRequest对象定义以下属性。

属性 访问类型 说明

Option 读/写 设置或检索一个WinHTTP的选项值。
ResponseBody 只读 检索作为无符号字节数组的响应实体机构。
ResponseStream 只读 检索机构作为响应实体的IStream 。
ResponseText 只读 作为文本检索响应实体机构。
Status 只读 从上次检索响应的HTTP状态代码。
StatusText 只读 获取HTTP状态的文本。

Events活动
The WinHttpRequest object defines the following events. WinHttpRequest对象定义的下列事件。

Event事件 Description说明

OnError Occurs when there is a run-time error in the application.发生时,有一个在应用程序的运行时错误。
OnResponseDataAvailable Occurs when data is available from the response.从数据时发生的反应可用。

OnResponseFinished Occurs when the response data is complete.响应时发生数据是否完整。
OnResponseStart Occurs when the response data starts to be received.响应时发生数据开始被收到。


Remarks备注
The WinHttpRequest object uses the IErrorInfo interface to provide error data.该WinHttpRequest对象使用IErrorInfo接口来提供错误数据。 A description and numerical error value can be obtained with the Err object in Microsoft Visual Basic Scripting Edition (VBScript), and the Error object in Microsoft JScript.的描述和数值误差值可与错误 )对象在Microsoft Visual Basic脚本版(VBScript,而误差在Microsoft JScript对象。 The lower 16 bits of an error number correspond to the values found in Error Messages .数的低16位的错误中找到对应值的错误信息 。

Note For Windows XP and Windows 2000, see Run-Time Requirements . 注意:对于Windows XP和Windows 2000,请参阅运行时间要求 。


Requirements要求
最低支持的客户端 Windows XP, Windows 2000 Professional with SP3 Windows XP
最低支持的服务器 Windows Server 2003, Windows 2000 Server with SP3

可再发行 WinHTTP 5.0 and Internet Explorer 5.01 or later on Windows XP and Windows 2000. WinHTTP的5.0和Internet Explorer 5.01或更高版本的Windows XP和Windows 2000。
IDL HttpRequest.idl HttpRequest.idl
Library Winhttp.lib Winhttp.lib
DLL Winhttp.dll Winhttp.dll

相关主题