- 浏览: 24867 次
最新评论
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
发表评论
-
字符串处理
2012-07-06 09:51 619第一节、字符串查找 1.1题目描述: 给定一个字符 ... -
笔记-正则表达式的2种引擎
2012-07-06 09:44 699正则表达式的引擎分为2种,一种是DFA引擎,一种是NFA引 ... -
常用正则表达式手册
2012-07-06 09:36 599匹配中文字符的正则表达式: [u4e00-u9fa5] ... -
网页换皮肤
2012-07-06 09:29 522... -
后台向前台js传递参数
2012-07-05 20:44 725aspx页面代码 //图片预览效果 function S ... -
基于组件中间件的前端架构
2012-07-03 13:42 739在现在的软件设计上,基本上采用的都是分布式系统,前端尤其突 ... -
基于组件中间件的前端架构
2012-07-03 12:15 597在现在的软件设计上,基本上采用的都是分布式系统,前端尤其突 ... -
Flex做的颜色器
2012-07-02 10:10 462此效果用对象的toString()方法来格式化输出字符串类 ... -
flex LineChart 的demo
2012-07-02 10:10 516... -
flex图片截取保存本地
2012-07-02 10:10 594Alert{font-size:12px;} ... -
Flex中,跨List实现SHIFT多选的例子
2012-07-02 10:10 640最近工作中遇到的问题,客户要求做这么个东西。还是稍微 ... -
FLEX 条形图(柱状图)设置刻度为百分比
2012-07-01 09:29 1072作者原创,如需转载请注明出处:www.krzone.org ... -
谈谈我对未来的想法吧
2012-07-01 09:28 761来总行珠海研发中 ... -
JavaFX Script With Eclipse 入门
2012-07-01 09:28 517最近Java社区最火的就是JavaFX Script的发布 ... -
Linux网络入侵检测软件
2012-07-01 09:28 690本软件是本人的毕业设计"作品"。当年是 ... -
Spring 3.0 整合 iBatis 3 Beta10 配置
2012-07-01 09:28 577弄了好长时间了,上网找各种资料,文档,最后发现Spring ... -
Flex Javascript交互实现代码
2012-06-30 11:13 541Flex Javascript交互实现代码 2010年09月 ... -
我参与的《云计算》项目前台Flex架构
2012-06-30 11:13 509我参与的《云计算》项 ... -
Flex 组成、变量、函数、命名空间
2012-06-30 11:13 577Flex 组成、变量、函数、命名空间 2011年04月13日 ... -
[引用]Ant 在Flex中的应用
2012-06-30 11:13 570[引用]Ant 在Flex中的应用 2011年08月13日 ...
相关推荐
Windows SharePoint Services 3.0 SDK 包括Windows SharePoint Services 3.0 软件开发工具包 (SDK) 的“通用参考”和 类库信息。
Windows Server 2008 TCP_IP Protocols and Services,总共516页pdf文挡,我已快读完,收益非浅,希望对大家有帮助
目录 第一部分 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示例服务
《精通Windows Server 2008 R2》内容丰富,信息充实,您可以快速地掌握新的Active Directory、Remote Desktop Services、Windows Server 2008 R2 Hyper-V等内容。《精通Windows Server 2008 R2》可以作为Windows ...
目录 第一部分 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示例服务
《精通Windows Server 2008 R2》内容丰富,信息充实,您可以快速地掌握新的Active Directory、Remote Desktop Services、Windows Server 2008 R2 Hyper-V等内容。《精通Windows Server 2008 R2》可以作为Windows ...
使用 Windows Server Update Services 部署 Windows 10 更新 在 Windows 更新中启用 FoD 和语言包更新 使用 System Center Configuration Manager 部署 Windows 10 更新 在更新后管理设备重启 管理其他 Windows...
《精通Windows Server 2008 R2》内容丰富,信息充实,您可以快速地掌握新的Active Directory、Remote Desktop Services、Windows Server 2008 R2 Hyper-V等内容。《精通Windows Server 2008 R2》可以作为Windows ...
主要介绍了c#创建windows服务(Windows Services)详细步骤,大家参考使用吧
01. Hello Windows CE 02. Drawing on the screen 03. Keyboard and Stylus 。 。 。 17. Devices and Services
Operations-Friendly Windows Services 参考:http://www.devopsonwindows.com/create-a-windows-service/
微软考试必备书籍,也是WEB开发人员不可或缺的一本参考书。
上册共分为10部分,这是第1部分 Windows内核情景分析(上册).part01.rar 基本信息 作者: 毛德操 出版社:电子工业出版社...14.3 服务管理进程Services 1424 14.4 服务进程Svchost 1449 跋 1464 参考文献... 1466
微软Windows® Phone推送通知服务(PushNotificationService)为第三方开发者提供了一个弹性、专注、可持续的通道,支持发送消息、从服务器(web services)端更新Windows® Phone应用程序。 在这一部分中,一个移动应用...
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 编译工具提供了一个SOAP关于C/C++ 语言的实现,从而让C/C++语言开发Web Services服务端或客户端程序...如何使用gSOAP,在gSOAP官网,或者在工具包gsoap\doc\soapdoc2.pdf文档中都有很详细的说明,大家可以参考。