HttpOpenRequestW 函式 (wininet.h)
建立 HTTP 要求句柄。
語法
HINTERNET HttpOpenRequestW(
[in] HINTERNET hConnect,
[in] LPCWSTR lpszVerb,
[in] LPCWSTR lpszObjectName,
[in] LPCWSTR lpszVersion,
[in] LPCWSTR lpszReferrer,
[in] LPCWSTR *lplpszAcceptTypes,
[in] DWORD dwFlags,
[in] DWORD_PTR dwContext
);
參數
[in] hConnect
InternetConnect所傳回之 HTTP 會話的句柄。
[in] lpszVerb
null 的指標終止字串,其中包含要求中使用的 HTTP 動詞。 如果此參數 NULL,則函式會使用 GET 做為 HTTP 動詞命令。
[in] lpszObjectName
null終止字串的指標,其中包含指定之 HTTP 動詞命令的目標物件名稱。 這通常是檔名、可執行模組或搜尋規範。
[in] lpszVersion
null終止字串的指標,其中包含要求中使用的 HTTP 版本。 Internet Explorer 中的設定將會覆寫此參數中指定的值。
如果此參數 NULL,則函式會根據 Internet Explorer 設定的值,使用 HTTP 版本 1.1 或 1.0。
價值 | 意義 |
---|---|
|
HTTP 1.0 版 |
|
HTTP 1.1 版 |
[in] lpszReferrer
null終止字串的指標,指定從中取得要求中 URL 之檔的 URL(lpszObjectName)。 如果此參數 NULL,則未指定任何查閱者。
[in] lplpszAcceptTypes
null字串的指標,表示用戶端接受的媒體類型。 以下是範例。
PCTSTR rgpszAcceptTypes[] = {_T("text/*"), NULL};
若無法正確終止具有 NULL 指標的陣列,將會導致當機。
如果此參數 NULL,則用戶端不會接受任何類型。 伺服器通常會解譯缺乏接受類型,以指出用戶端只接受類型為 「text/*」 的檔(也就是只有文字檔—沒有圖片或其他二進位檔)。
[in] dwFlags
因特網選項。 此參數可以是下列任何值。
價值 | 意義 |
---|---|
|
如果資源的網路要求因為ERROR_INTERNET_CONNECTION_RESET而失敗,從快取傳回資源,或ERROR_INTERNET_CANNOT_CONNECT(嘗試連線到伺服器失敗)。 |
|
判斷是否要從網路重載專案時,如果沒有任何 Expires 時間和從伺服器傳回的 LastModified 時間,則強制重載。 |
|
針對要求中指定的主機名,停用從伺服器傳回的SSL/PCT型憑證檢查。 WinINet 函式會比較相符的主機名和簡單的通配符規則,對憑證使用簡單的檢查。 |
|
停用 SSL/PCT 型憑證的檢查,以取得適當的有效日期。 |
|
停用這種特殊重新導向類型的偵測。 使用此旗標時,WinINet 函式會以透明方式允許從 HTTPS 重新導向至 HTTP URL。 |
|
停用這種特殊重新導向類型的偵測。 使用此旗標時,WinINet 函式會以透明方式允許從 HTTP 重新導向至 HTTPS URL。 |
|
如果連線可用,請使用keep-alive語意。 Microsoft網路 (MSN)、NT LAN Manager (NTLM) 和其他驗證類型都需要此旗標。 |
|
如果無法快取檔案,就會建立暫存盤。 |
|
不會自動嘗試驗證。 |
|
不會在 HttpSendRequest中自動處理重新導向。 |
|
不會將傳回的實體新增至快取。 |
|
不會自動將 Cookie 標頭新增至要求,也不會自動將傳回的 Cookie 新增至 Cookie 資料庫。 |
|
停用 Cookie 對話框。 |
|
強制源伺服器解析要求,即使 Proxy 上有快取的複本也一樣。 |
|
強制從源伺服器下載要求的檔案、對象或目錄清單,而不是從快取下載。 |
|
如果資源自上次下載後已修改,就會重載 HTTP 資源。 所有 FTP 資源都會重載。
Windows XP 和 Windows Server 2003 R2 和更早版本:也會重載 Gopher 資源。 |
|
使用安全的交易語意。 這可轉譯為使用安全套接字層/私人通訊技術 (SSL/PCT),而且在 HTTP 要求中才有意義。 |
[in] dwContext
變數的指標,其中包含將這項作業與任何應用程式數據建立關聯的應用程式定義值。
傳回值
如果成功,則傳回 HTTP 要求句柄,否則 NULL。 若要擷取擴充的錯誤資訊,請呼叫 GetLastError。
言論
HttpOpenRequest 函式會建立新的 HTTP 要求句柄,並將指定的參數儲存在該句柄中。 HTTP 要求句柄會保存要傳送至 HTTP 伺服器的要求,並包含所有要作為要求一部分傳送的 RFC822/MIME/HTTP 標頭。
如果指定了 「GET」 或 「POST」 以外的動詞,HttpOpenRequest 會自動設定要求的INTERNET_FLAG_NO_CACHE_WRITE和INTERNET_FLAG_RELOAD。
使用 Microsoft Internet Explorer 5 和更新版本時,如果 lpszVerb 設定為 “HEAD”,則會在 HTTP/1.1 伺服器的回應上忽略 Content-Length 標頭。
在 Windows 7、Windows Server 2008 R2 和更新版本上,Internet Explorer 設定會覆寫 lpszVersion 參數。 EnableHttp1_1 是在系統 Internet Explorer 中設定的因特網選項所控制的登錄值 HKLM\Software\Microsoft\InternetExplorer\AdvacnedOptions\HTTP\GENABLE。 EnableHttp1_1 值預設為 1。 HttpOpenRequest 函式會將任何小於 1.1 的 HTTP 版本升級至 HTTP 1.1 版,如果 EnableHttp1_1 設為 1。
呼叫端應用程式使用 HttpOpenRequest傳回的 HINTERNET 句柄之後,必須使用 InternetCloseHandle 函式關閉。
如同 WinINet API 的其他所有層面,無法從 DllMain 或全域物件的建構函式和解構函式安全地呼叫此函式。
注意
wininet.h 標頭會將 HttpOpenRequest 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | wininet.h |
連結庫 | Wininet.lib |
DLL | Wininet.dll |