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.0 版
HTTP/1.1
HTTP 1.1 版

[in] lpszReferrer

以 Null終止字串的指標,指定從中取得要求中 URL (lpszObjectName) 的檔 URL。 如果此參數為 Null,則不會指定任何參考者。

[in] lplpszAcceptTypes

字串的 Null終止陣列指標,表示用戶端接受的媒體類型。 範例如下。

PCTSTR rgpszAcceptTypes[] = {_T("text/*"), NULL};

若無法以 Null 指標正確終止陣列,將會導致當機。

如果此參數為 Null,則用戶端不會接受任何類型。 伺服器通常會解譯缺少接受類型,以指出用戶端只接受類型為 「text/*」 (的檔,也就是只有文字檔—沒有圖片或其他二進位檔案) 。

[in] dwFlags

網際網路選項。 這個參數可以是下列任何一個值。

意義
INTERNET_FLAG_CACHE_IF_NET_FAIL
如果資源的網路要求因為ERROR_INTERNET_CONNECTION_RESET (伺服器連線已重設) 或ERROR_INTERNET_CANNOT_CONNECT (嘗試連線到伺服器失敗,) 失敗,就會從快取傳回資源。
INTERNET_FLAG_HYPERLINK
判斷是否要從網路重載專案時,如果沒有 Expires 時間,且伺服器未傳回 LastModified 時間,則強制重載。
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
針對要求中指定的主機名稱,停用從伺服器傳回的 SSL/PCT 憑證檢查。 WinINet 函式會藉由比較相符的主機名稱和簡單的萬用字元規則,針對憑證使用簡單的檢查。
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
停用 SSL/PCT 型憑證的檢查,以取得適當的有效日期。
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
停用這種特殊重新導向類型的偵測。 使用此旗標時,WinINet 函式會以透明方式允許從 HTTPS 重新導向至 HTTP URL。
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
停用這種特殊重新導向類型的偵測。 使用此旗標時,WinINet 函式會以透明方式允許從 HTTP 重新導向至 HTTPS URL。
INTERNET_FLAG_KEEP_CONNECTION
如果有的話,請使用連線的 Keep-alive 語意。 Microsoft Network (MSN) 、NT LAN Manager (NTLM) 和其他類型的驗證都需要此旗標。
INTERNET_FLAG_NEED_FILE
如果無法快取檔案,就會建立暫存檔案。
INTERNET_FLAG_NO_AUTH
不會自動嘗試驗證。
INTERNET_FLAG_NO_AUTO_REDIRECT
不會自動處理 HttpSendRequest中的重新導向。
INTERNET_FLAG_NO_CACHE_WRITE
不會將傳回的實體新增至快取。
INTERNET_FLAG_NO_COOKIES
不會自動將 Cookie 標頭新增至要求,也不會自動將傳回的 Cookie 新增至 Cookie 資料庫。
INTERNET_FLAG_NO_UI
停用 Cookie 對話方塊。
INTERNET_FLAG_PRAGMA_NOCACHE
強制源伺服器解析要求,即使 Proxy 上有快取的複本也一樣。
INTERNET_FLAG_RELOAD
強制從源伺服器下載要求的檔案、物件或目錄清單,而不是從快取下載。
INTERNET_FLAG_RESYNCHRONIZE
如果資源自上次下載後已修改,則會重載 HTTP 資源。 所有 FTP 資源都會重載。

Windows XP 和 Windows Server 2003 R2 和更早版本: Gopher 資源也會重載。

INTERNET_FLAG_SECURE
使用安全交易語意。 這會轉譯為使用安全通訊端層/私人通訊技術 (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 中設定的 Internet Options 所控制的HKLM\Software\Microsoft\InternetExplorer\AdvacnedOptions\HTTP\GENABLE下的登錄值。 EnableHttp1_1值預設為 1。 如果EnableHttp1_1設為 1,HttpOpenRequest函式會將小於 1.1 的任何 HTTP 版本升級為 HTTP 1.1 版。

呼叫端應用程式使用HttpOpenRequest所傳回的HINTERNET控制碼完成之後,必須使用InternetCloseHandle函式加以關閉。

注意當要求以非同步模式傳送時, (InternetOpendwFlags參數會指定INTERNET_FLAG_ASYNC) ,而dwCoNtext參數為零 (INTERNET_NO_CALLBACK) ,則不會叫用要求控制碼上以InternetSetStatusCallback設定的回呼函式,不過,呼叫仍會在非同步模式中執行。

就像 WinINet API 所有其他層面一樣,您無法從 DllMain 或全域物件的建構函式和解構函式安全地呼叫此函式。

注意 WinINet 不支援伺服器實作。 此外,不應該從服務使用它。 對於伺服器實作或服務,請使用 Microsoft Windows HTTP Services (WinHTTP)
 

注意

wininet.h 標頭會將 HttpOpenRequest 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平臺 Windows
標頭 wininet.h
程式庫 Wininet.lib
DLL Wininet.dll

另請參閱

HTTP 會話

WinINet 函式