WinHTTP Services 5.1 参考资料

来源:Microsoft 时间:2010-03-27 20:49:00 

WinHttp; // Microsoft WinHTTP Services, version 5.1

Alias HTTPREQUEST_PROXY_SETTING;
  I4

Alias HTTPREQUEST_SETCREDENTIALS_FLAGS;
  I4

Enum WinHttpRequestOption; // WinHttpRequest Options
GUID={12782009-FE90-4877-9730-E5E183669B19};
  WinHttpRequestOption_UserAgentString = 0;
  WinHttpRequestOption_URL = 1;
  WinHttpRequestOption_URLCodePage = 2;
  WinHttpRequestOption_EscapePercentInURL = 3;
  WinHttpRequestOption_SslErrorIgnoreFlags = 4;
  WinHttpRequestOption_SelectCertificate = 5;
  WinHttpRequestOption_EnableRedirects = 6;
  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;
GUID={9D8A6DF8-13DE-4B1F-A330-67C719D62514};
  AutoLogonPolicy_Always = 0;
  AutoLogonPolicy_OnlyIfBypassProxy = 1;
  AutoLogonPolicy_Never = 2;

Enum WinHttpRequestSslErrorFlags;
GUID={152A1CA2-55A9-43A3-B187-0605BB886349};
  SslErrorFlag_UnknownCA = $100;
  SslErrorFlag_CertWrongUsage = $200;
  SslErrorFlag_CertCNInvalid = $1000;
  SslErrorFlag_CertDateInvalid = $2000;
  SslErrorFlag_Ignore_All = $3300;

Enum WinHttpRequestSecureProtocols;
GUID={6B2C51C1-A8EA-46BD-B928-C9B76F9F14DD};
  SecureProtocol_SSL2 = 8;
  SecureProtocol_SSL3 = 32;
  SecureProtocol_TLS1 = 128;
  SecureProtocol_ALL = 168;

Dispatch IWinHttpRequest; // IWinHttpRequest Interface
GUID={016FE2EC-B2C8-45F8-B23B-39E53A75396B};
  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);

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);

示例:

同步获取数据

 

function getText(strURL)
{
    var strResult;
   
    try
    {
        // Create the WinHTTPRequest ActiveX Object.
        var WinHttpReq = new ActiveXObject(
                                  "WinHttp.WinHttpRequest.5.1");
        
        //  Create an HTTP request.
        var temp = WinHttpReq.Open("GET", strURL, false);
        //  Send the HTTP request.
        WinHttpReq.Send();
        
        //  Retrieve the response text.
        strResult = WinHttpReq.ResponseText;
    }
    catch (objError)
    {
        strResult = objError + "\n"
        strResult += "WinHTTP returned error: " +
            (objError.number & 0xFFFF).toString() + "\n\n";
        strResult += objError.description;
    }
   
    //  Return the response text.
    return strResult;
}
WScript.Echo(getText(http://www.microsoft.com/default.htm));

改为异步获取

//  Create a HTTP request.
    var temp = WinHttpReq.Open("GET", strURL, true);//此处由false改成true

在访问ResponseText之前调用WaitForResponse方法以确保获取的是完整的响应。

//  Send the HTTP request.
    WinHttpReq.Send();
        
    // Wait for the entire response.
    WinHttpReq.WaitForResponse();
        
    //  Retrieve the response text.
    strResult = WinHttpReq.ResponseText;

标签:WinHttp.WinHttpRequest.5.1,参考,xmlhttp
0
投稿

猜你喜欢

  • 影响SQL Server性能的三个关键点

    2009-03-09 13:11:00
  • python代码如何实现余弦相似性计算

    2021-08-15 03:40:04
  • python常见的格式化输出小结

    2022-12-29 20:23:31
  • Centos 7 安装mysql5.7.24二进制 版本的方法及解决办法

    2024-01-21 22:18:58
  • 跟老齐学Python之再深点,更懂list

    2021-02-05 21:44:18
  • python中threading和queue库实现多线程编程

    2023-01-12 13:59:08
  • Golang使用Consul详解

    2024-04-26 17:35:56
  • Python实现壁纸下载与轮换

    2022-07-01 19:19:19
  • tensorflow之读取jpg图像长和宽实例

    2023-10-12 11:57:41
  • python中的数据结构比较

    2023-07-20 10:58:35
  • 用Python实现等级划分

    2022-10-11 23:45:21
  • python中的annotate函数使用

    2021-04-10 01:52:59
  • python对csv文件追加写入列的方法

    2022-11-14 01:56:29
  • 深入理解JavaScript系列(28):设计模式之工厂模式详解

    2024-05-06 10:08:17
  • python利用socket实现udp文件传输功能

    2023-07-07 14:15:33
  • Sql Server中的非聚集索引详细介

    2024-01-26 15:57:56
  • python输出电脑上所有的串口名的方法

    2022-06-23 20:56:03
  • CentOS 7.6安装MySQL 5.7 GA版的教程图解

    2024-01-27 11:47:48
  • vue实现消息无缝滚动效果

    2024-05-29 22:42:33
  • Python中关于property使用的小技巧

    2021-01-25 04:35:44
  • asp之家 网络编程 m.aspxhome.com