`
nmv884rp
  • 浏览: 24867 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Windows HTTP Services 参考资料

 
阅读更多

Windows HTTP Services 参考资料
2009年12月14日
  参考:http://msdn2.microsoft.com/en-us/library/aa384273(VS.85).aspx
  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;
  ********************************************************************************************************************************************
  AJAX(狭义)不用这个组件。
  补充一个应用例子:显示Http连接过程
  将以下代码保存为 httpConnect.wsf
  代码:
  
  
  
  var HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0;
  var login = "admin";
  var passw = "admin";
  var targURL = "http://bbs.veryhman.com";
  var method = "GET";
  http.Open(method, targURL);
  var Done = false;
  var LastStatus=0;
  do
  {
  http.Send();
  var Status = http.Status;
  switch (Status)
  {
  case 200:
  Done = true;
  break;
  case 401:
  p("Requires Server UserName and Password.");
  http.Open(method, targURL, false);
  http.SetCredentials(login, passw,
  HTTPREQUEST_SETCREDENTIALS_FOR_SERVER);
  if (LastStatus == 401)
  Done = true;
  break;
  default:
  p("Unexpected Status: " + Status);
  Done = true;
  break;
  }   
  LastStatus = Status;   
  } while (!Done);
  p(http.GetAllResponseHeaders());
  function p(s){WScript.Echo(s)}
  function http::OnError(ErrorNumber, ErrorDescription) {p("ErrorNumber: "+ErrorNumber);p("ErrorDescription: "+ErrorDescription)}
  function http::OnResponseDataAvailable(Data) {p(Data.join("\n"))}
  function http::OnResponseFinished() {p("Response Finished.")}
  function http::OnResponseStart(Status, ContentType) {p("Status: "+Status);p("ContentType: "+ContentType)}
  
  
  在cmd命令行里运行
  cscript httpConnect.wsf
  *************************************************************************************************************************************
  Use Winhttp.winhttprequest To Download Files From A Remote Web Server To A Local Mirror Site... ( Vbscript )  
  Author: Martin77
  Description:
  A script that downloads files from a remote web server to a local mirror site (you can use it for just downloading files to anywhere you want...)
  Script:
  '*************************************************************************************************
  ' Download.vbs - Download files from the internet to local mirror servers
  ' Created by Martin77 (version 1.0)
  '*************************************************************************************************
  Option Explicit
  On Error Resume Next
  Dim LogPath, SourceURL, TargetPath, Files2Download
  '*************************************************************************************************
  '            Edit these variables only!
  '*************************************************************************************************
  'Where to save the log file:
  LogPath = "C:\Inetpub\wwwroot\Logs\"
  'From where download the files:
  SourceURL = "http://www.somesite.com/rootfolder/otherfolder/"
  'Where to save the downloaded files:
  TargetPath = "C:\Inetpub\wwwroot\LocalSite\"
  'What files to download (separated by ','):
  Files2Download = "file1.txt,file2.exe,file3.zip"
  '*************************************************************************************************
  Main 'Run the main process
  '*************************************************************************************************
  'Main process:
  Sub Main
  Dim strOutputFile, strErrCode, strOutPut, i
  Dim objArgs, objFSO, objOutputFile, objHTTP
  Dim arrFiles2Download
  Const ForReading = 1, ForWriting = 2, ForAppending = 8
  arrFiles2Download = Split(Files2Download,",")
  strOutputFile = LogPath & "Download-Log-" & Replace(Date,"/","-") & ".log"
  'Parse Arguments (from App. Center URL Health Monitor):
  Set objArgs = Wscript.Arguments
  For i = 0 To objArgs.count - 1
  strErrCode = strErrCode & objArgs(i) & " "
  Next
  Set objArgs = Nothing
  strOutPut = Now & " - " & strErrCode
  'Download files:
  For i = 0 To Ubound(arrFiles2Download)
  If SaveWebBinary(SourceURL & arrFiles2Download(i), TargetPath & arrFiles2Download(i)) Then
  'Download OK:
  strOutPut = strOutPut & vbCrLf & Now & " - Downloaded file: " & arrFiles2Download(i)
  Else
  'Download Error
  strOutPut = strOutPut & vbCrLf & Now & " - Error downloading file: " & arrFiles2Download(i)
  End If
  Next
  'Write LogFile:
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objOutputFile = objFSO.OpenTextFile(strOutputFile, ForAppending, True)
  objOutputFile.Write "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" & vbCrLf
  objOutputFile.Write strOutPut & vbCrLf
  objOutputFile.Write "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" & vbCrLf
  objOutputFile.Close
  Set objFSO = Nothing
  Set objOutputFile = Nothing
  End Sub
  '*************************************************************************************************
  'Download the file from %strUrl% to %strFile% - returns True / False
  Function SaveWebBinary(strUrl, strFile) 'As Boolean
  Const adTypeBinary = 1
  Const adSaveCreateOverWrite = 2
  Const ForWriting = 2
  Dim web, varByteArray, strData, strBuffer, lngCounter, ado
  Err.Clear
  Set web = Nothing
  Set web = CreateObject("WinHttp.WinHttpRequest.5.1")
  If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest")
  If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP")
  If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP")
  web.Open "GET", strURL, False
  web.Send
  If Err.Number  0 Then
  SaveWebBinary = False
  Set web = Nothing
  Exit Function
  End If
  If web.Status  "200" Then
  SaveWebBinary = False
  Set web = Nothing
  Exit Function
  End If
  varByteArray = web.ResponseBody
  Set web = Nothing
  'Save the file
  On Error Resume Next
  Set ado = Nothing
  Set ado = CreateObject("ADODB.Stream")
  If ado Is Nothing Then
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set ts = fs.OpenTextFile(strFile, ForWriting, True)
  strData = ""
  strBuffer = ""
  For lngCounter = 0 to UBound(varByteArray)
  ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
  Next
  ts.Close
  Else
  ado.Type = adTypeBinary
  ado.Open
  ado.Write varByteArray
  ado.SaveToFile strFile, adSaveCreateOverWrite
  ado.Close
  End If
  SaveWebBinary = True
  End Function
  '*************************************************************************************************
  http://bbs.blueidea.com/thread-2818063-1-1.html
分享到:
评论

相关推荐

    Windows SharePoint Services 3.0 SDK 中文

    Windows SharePoint Services 3.0 SDK 包括Windows SharePoint Services 3.0 软件开发工具包 (SDK) 的“通用参考”和 类库信息。

    Windows Server 2008 TCP_IP Protocols and Services

    Windows Server 2008 TCP_IP Protocols and Services,总共516页pdf文挡,我已快读完,收益非浅,希望对大家有帮助

    用C语言开发手机软件-Windows CE 6.0开发者参考

    目录 第一部分 Windows编程基础 第1章 HelloWindowsCE 1.1 WindowsCE标准Windows的差别 1.1.1 WindowsCE和标准Windows的差别 1.1.2 资源有限的WindowsCE设备 ...17.4.7 Services.exe的命令行 17.4.8 TickSrv示例服务

    [PDF.带书签目录] 精通windows server 2008 R2.part2

    《精通Windows Server 2008 R2》内容丰富,信息充实,您可以快速地掌握新的Active Directory、Remote Desktop Services、Windows Server 2008 R2 Hyper-V等内容。《精通Windows Server 2008 R2》可以作为Windows ...

    用C语言开发手机软件 -Windows+CE+6.0开发者参考

    目录 第一部分 Windows编程基础 第1章 HelloWindowsCE 1.1 WindowsCE标准Windows的差别 1.1.1 WindowsCE和标准Windows的差别 1.1.2 资源有限的WindowsCE设备 ...17.4.7 Services.exe的命令行 17.4.8 TickSrv示例服务

    [PDF.带书签目录]精通windows server 2008 R2.part3

    《精通Windows Server 2008 R2》内容丰富,信息充实,您可以快速地掌握新的Active Directory、Remote Desktop Services、Windows Server 2008 R2 Hyper-V等内容。《精通Windows Server 2008 R2》可以作为Windows ...

    使用 Microsoft 365 部署 Windows 10

    使用 Windows Server Update Services 部署 Windows 10 更新 在 Windows 更新中启用 FoD 和语言包更新 使用 System Center Configuration Manager 部署 Windows 10 更新 在更新后管理设备重启 管理其他 Windows...

    [PDF.带书签目录]精通windows server 2008 R2.part1

    《精通Windows Server 2008 R2》内容丰富,信息充实,您可以快速地掌握新的Active Directory、Remote Desktop Services、Windows Server 2008 R2 Hyper-V等内容。《精通Windows Server 2008 R2》可以作为Windows ...

    c#创建windows服务(Windows Services)详细步骤

    主要介绍了c#创建windows服务(Windows Services)详细步骤,大家参考使用吧

    Windows CE6.0 开发者参考 Example

    01. Hello Windows CE 02. Drawing on the screen 03. Keyboard and Stylus 。 。 。 17. Devices and Services

    Windows服务......

    Operations-Friendly Windows Services 参考:http://www.devopsonwindows.com/create-a-windows-service/

    Microsoft.Exam Ref 70-487.Developing Windows Azure and Web Services

    微软考试必备书籍,也是WEB开发人员不可或缺的一本参考书。

    Windows 内核情景分析--采用开源代码ReactOS (上册) part01

    上册共分为10部分,这是第1部分 Windows内核情景分析(上册).part01.rar 基本信息 作者: 毛德操 出版社:电子工业出版社...14.3 服务管理进程Services 1424 14.4 服务进程Svchost 1449 跋 1464 参考文献... 1466

    Windows Phone 4. 使用消息推送机制

    微软Windows® Phone推送通知服务(PushNotificationService)为第三方开发者提供了一个弹性、专注、可持续的通道,支持发送消息、从服务器(web services)端更新Windows® Phone应用程序。 在这一部分中,一个移动应用...

    Windows NT Native API 英文PDF版手册 [评价可免费]

    The system services described in this chapter operate on the system as a whole rather than on individual objects within the system.They mostly gather information about the performance and operation of...

    编程脚本参考手册

    Microsoft Visual Basic Scripting Edition 为各种环境提供有效的脚本编写手段,包括 Microsoft Internet Explorer 中的 Web 客户端脚本编写及 Microsoft Internet Information Services 中的 Web 服务器端脚本编写...

    gsoap 2.8.71

    gSOAP 编译工具提供了一个SOAP关于C/C++ 语言的实现,从而让C/C++语言开发Web Services服务端或客户端程序...如何使用gSOAP,在gSOAP官网,或者在工具包gsoap\doc\soapdoc2.pdf文档中都有很详细的说明,大家可以参考。

Global site tag (gtag.js) - Google Analytics