InternetOpenUrlA 函式 (wininet.h)

開啟由完整 FTP 或 HTTP URL 指定的資源。

語法

HINTERNET InternetOpenUrlA(
  [in] HINTERNET hInternet,
  [in] LPCSTR    lpszUrl,
  [in] LPCSTR    lpszHeaders,
  [in] DWORD     dwHeadersLength,
  [in] DWORD     dwFlags,
  [in] DWORD_PTR dwContext
);

參數

[in] hInternet

目前網際網路會話的控制碼。 先前呼叫 InternetOpen時,必須傳回控制碼。

[in] lpszUrl

Null終止字串變數的指標,指定要開始讀取的 URL。 僅支援開頭為 ftp:、HTTP:或 HTTPs: 的 URL。

[in] lpszHeaders

Null終止字串的指標,指定要傳送至 HTTP 伺服器的標頭。 如需詳細資訊,請參閱HttpSendRequest函式中的lpszHeaders參數描述。

[in] dwHeadersLength

TCHAR中其他標頭的大小。 如果此參數為 -1L 且 lpszHeaders 不是 Null則會假設 lpszHeaders 為零終止 (ASCIIZ) ,並計算長度。

[in] dwFlags

此參數可以是下列其中一個值。

意義
INTERNET_FLAG_EXISTING_CONNECT
如果現有的 InternetConnect 物件存在,且具有提出要求所需的相同屬性,就會嘗試使用現有的 InternetConnect 物件。 這只適用于 FTP 作業,因為 FTP 是唯一在相同會話期間執行多個作業的通訊協定。 WinINet API 會針對InternetOpen所產生的每個HINTERNET控制碼快取單一連線控制碼。 InternetOpenUrl 會針對 HTTP 和 FTP 連線使用此旗標。
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 網路 (MSN) 、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_PASSIVE
使用被動 FTP 語意。 InternetOpenUrl 會針對 FTP 檔案和目錄使用此旗標。
INTERNET_FLAG_PRAGMA_NOCACHE
強制源伺服器解析要求,即使 Proxy 上有快取的複本也一樣。
INTERNET_FLAG_RAW_DATA
擷取 FTP 目錄資訊時,以 WIN32_FIND_DATA 結構傳回資料。 如果未指定此旗標,或透過 CERN Proxy 進行呼叫, InternetOpenUrl 會傳回目錄的 HTML 版本。

Windows XP 和 Windows Server 2003 R2 和更早版本: 擷取 Gopher 目錄資訊時,也會以 GOPHER_FIND_DATA 結構的形式傳回資料。

INTERNET_FLAG_RELOAD
強制從源伺服器下載要求的檔案、物件或目錄清單,而不是從快取下載。
INTERNET_FLAG_RESYNCHRONIZE
如果資源自上次下載後已修改,則會重載 HTTP 資源。 所有 FTP 資源都會重載。

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

INTERNET_FLAG_SECURE
使用安全交易語意。 這會轉譯為使用安全通訊端層/私人通訊技術 (SSL/PCT) ,而且只有在 HTTP 要求中才有意義。

[in] dwContext

變數的指標,指定傳遞給任何回呼函式的應用程式定義值以及傳回的控制碼。

傳回值

如果成功建立連線,則會傳回 URL 的有效控制碼,如果連線失敗則傳回 Null 。 若要擷取特定的錯誤訊息,請呼叫 GetLastError。 若要判斷為何拒絕存取服務,請呼叫 InternetGetLastResponseInfo

備註

如果使用的 URL 包含相對 URL 和以空格分隔的基底 URL,請先呼叫 InternetCanonicalizeUrl

這是應用程式可用來透過 WinINet 支援的任何通訊協定擷取資料的一般函式。 當應用程式不需要存取通訊協定的特定資料,但只需要對應至 URL 的資料時,此函式特別有用。 InternetOpenUrl函式會剖析 URL 字串、建立與伺服器的連線,並準備下載 URL 所識別的資料。 然後,應用程式可以使用 InternetReadFile (來擷取 URL 資料的目錄) 或 InternetFindNextFile) (。 在InternetOpenUrl之前,不需要呼叫InternetConnect

Windows XP 和 Windows Server 2003 R2 和更早版本: InternetOpenUrl 會在小於 1024 的埠上停用 Gopher,但埠 70 除外,標準 Gopher 埠和埠 105,通常用於中央服務組織 (CSO) 名稱搜尋。

呼叫應用程式使用InternetOpenUrl所傳回的HINTERNET控制碼完成之後,必須使用InternetCloseHandle函式來關閉它。

注意在非同步模式中工作時, (InternetOpendwFlags參數會指定INTERNET_FLAG_ASYNC) ,而dwCoNtext參數是零 (INTERNET_NO_CALLBACK) ,則不會叫用會話控制碼上以InternetSetStatusCallback設定的回呼函式,不過,呼叫仍會在非同步模式中執行

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

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

注意

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

規格需求

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

另請參閱

處理統一資源定位器

WinINet 函式