1. 程式人生 > >Windows HTTP服務(WinHTTP)介紹

Windows HTTP服務(WinHTTP)介紹

Windows HTTP服務(WinHTTP)
目的
Microsoft Windows HTTP服務(WinHTTP)為開發人員提供了HTTP客戶端應用程式程式設計介面(API),通過HTTP協議向其他HTTP伺服器傳送請求。

適用範圍

WinHTTP支援桌面客戶端應用程式,Windows服務和基於Windows伺服器的應用程式。

因為.NET Framework應用程式應該使用System.net類中的網路設施,所以不建議在Microsoft .NET Framework上構建WinHTTP。


開發人員

WinHTTP提供適用於基於Active Server Pages(ASP)的應用程式的C / C ++應用程式程式設計介面(API)和元件物件模型(COM)自動化元件。

對HTTP協議的基本瞭解對於使用任一介面很重要。


執行時要求

WinHTTP 5.1提供5.0版本的改進。有關新功能的更多資訊,請參閱WinHTTP 5.1中的新功能。

WinHTTP 5.1現在是以下系統的作業系統元件:


Windows Server 2003系列 
Windows XP SP1 
Windows 2000 SP3(資料中心伺服器除外) 
重要隨著WinHTTP版本5.1的釋出,WinHTTP 5.0下載不可用。Microsoft已從MSDN中刪除WinHTTP 5.0 SDK下載,並於2004年10月1日終止了5.0版的產品支援。


關於WinHTTP
Microsoft Windows HTTP服務(WinHTTP)為開發人員提供了HTTP / 1.1 Internet協議的伺服器支援的高階介面。WinHTTP旨在主要用於與HTTP伺服器進行通訊的伺服器應用程式在基於伺服器的場景中。

WinINet是一種較舊的技術,被設計為用於互動式桌面應用程式(如Microsoft Internet Explorer,Microsoft Office和Microsoft Money)的HTTP客戶端平臺。WinINet會顯示一些使用者介面,例如收集使用者憑據。然而,WinHTTP以程式設計方式處理這些操作。需要HTTP客戶端服務的伺服器應用程式應使用WinHTTP而不是WinINet。有關更多資訊,請參閱將WinINet應用程式移植到WinHTTP。

WinHTTP也被設計用於系統服務和基於HTTP的客戶端應用程式。WinHTTP比WinInet更安全可靠。但是,需要FTP或Gopher協議功能,cookie永續性,快取,自動憑證對話方塊處理,Internet Explorer相容性或下級平臺支援的單使用者應用程式應考慮使用WinInet。

該介面可以通過使用WinHTTP應用程式程式設計介面(API)或使用IWinHttpRequest和IWinHttpRequestEvents介面從C / C ++訪問。也可以通過WinHTTP物件從指令碼和Microsoft Visual Basic訪問WinHTTP。有關各個功能的更多資訊和說明,請參閱特定語言的WinHTTP函式參考。

應用程式(如C#或ASP.NET應用程式)應考慮託管的.NET Framework類。有關使用.NET Framework網路類的更多資訊,請參閱MSDN庫中的“訪問Internet”主題:“.NET開發”>“.NET Framework SDK”>“.NET Framework”>“使用。 .NET框架“。

注意除了非同步完成回撥之外,WinHTTP不可重入。也就是說,當執行緒有一個等待WinHTTP功能之一的呼叫,如WinHttpSendRequest,WinHttoReceiveResponse,WinHttpQueryDataAvailable,WinHttpSendData或WinHttpWriteData時,它不能再次呼叫WinHTTP直到第一個呼叫完成。可能發生第二次呼叫的一種情況如下:如果應用程式將非同步過程呼叫(APC)排隊到呼叫WinHTTP的執行緒中,並且如果WinHTTP在內部執行警報等待,則APC將有機會執行。現在如果APC例程也可以呼叫WinHTTP,它重新輸入WinHTTP API,WinHTTP的內部狀態可能會被破壞。

WinHTTP 5.1特性

在WinHTTP 5.1版中添加了以下功能:

IPv6支援。 
AutoProxy功能。 
HTTP / 1.0協議,包括對keep-alive(持久)連線和會話cookie的支援。 
HTTP / 1.1分組轉移支援HTTP響應。 
在會話之間保持活躍的匿名連線池。 
安全套接字層(SSL)功能,包括客戶端證書。支援的SSL協議包括以下內容:SSL 2.0,SSL 3.0和傳輸層安全性(TLS)1.0。
支援伺服器和代理身份驗證,包括對Microsoft Passport 1.4和Negotiate / Kerberos包的整合支援。 
自動處理重定向,除非被禁止。 指令碼化介面除了API。 跟蹤裝置來幫助解決問題。 WinHTTP不支援多個WinINet功能,包括URL快取和永續性Cookie,自動轉發,自動撥號,離線支援,檔案傳輸協議(FTP)和Gopher協議。 有關版本5.1中引入的更改的更多資訊,請參閱WinHTTP 5.1中的新增功能。 WinHTTP入門 有關WinHTTP的更多資訊,請參閱以下主題: WinHTTP版本描述了在不同平臺上執行的兩個版本的WinHTTP,版本5.0和版本5.1。 WinHTTP 5.1中的新功能介紹了最新版本的WinHTTP中的更改和新增功能。 網路術語描述了與一般的網路和特定的HTTP協議有關的有用的概念和術語。 選擇一個WinHTTP介面描述了C / C ++ API和WinHTTP的COM介面。 WinHTTP安全注意事項描述使用WinHTTP時要注意的安全問題。 將WinINet應用程式移植到WinHTTP中,介紹如何修改現有的WinINet應用程式以使用WinHTTP API。 WinHTTP功能 WinHTTP提供以下功能: WinHttpAddRequestHeaders 向HTTP請求控制代碼新增一個或多個HTTP請求標頭。 WinHttpCheckPlatform 確定WinHTTP是否支援當前平臺。 WinHttpCloseHandle 關閉單個HINTERNET控制代碼。 WinHttpConnect 指定HTTP請求的初始目標伺服器。 WinHttpCrackUrl 將URL分為其組成部分,例如主機名和路徑。 WinHttpCreateUrl 從元件部分建立URL,例如主機名和路徑。 WinHttpDetectAutoProxyConfigUrl 查詢代理自動配置(PAC)檔案的URL。此功能報告PAC檔案的URL,但不下載該檔案。 WinHttpGetDefaultProxyConfiguration 從登錄檔中檢索預設的WinHTTP代理配置。 WinHTTPGetIEProxyConfigForCurrentUser 獲取當前使用者的Internet Explorer(IE)代理配置。 WinHttpGetProxyForUrl 檢索指定URL的代理資訊。 WinHttpOpen 初始化應用程式對WinHTTP功能的使用。 WinHttpOpenRequest 建立HTTP請求控制代碼。 WinHttpQueryAuthSchemes 返回伺服器支援的授權方案。 WinHttpQueryDataAvailable 返回使用WinHttpReadData立即可以讀取的資料的位元組數。 WinHttpQueryHeaders 檢索與HTTP請求相關聯的頭資訊。 WinHttpQueryOption 在指定的控制代碼上查詢Internet選項。 WinHttpReadData 從WinHttpOpenRequest函式開啟的控制代碼中讀取資料。 WinHttpReceiveResponse 結束由WinHttpSendRequest啟動的HTTP請求。 WinHttpSendRequest 將指定的請求傳送到HTTP伺服器。 WinHttpSetCredentials 將所需的授權憑證傳遞給伺服器。 WinHttpSetDefaultProxyConfiguration 在登錄檔中設定預設的WinHTTP代理配置。 WinHttpSetOption 設定Internet選項。 WinHttpSetStatusCallback 設定WinHTTP可以在操作過程中進行呼叫的回撥函式。 WinHttpSetTimeouts 設定涉及HTTP事務的各種超時。 WinHttpTimeFromSystemTime 根據HTTP版本1.0規範格式化日期和時間。 WinHttpTimeToSystemTime 獲取HTTP時間/日期字串並將其轉換為SYSTEMTIME結構。 WinHttpWriteData 將請求資料寫入HTTP伺服器。