Impostazione e recupero di opzioni Internet
In questo argomento viene descritto come impostare e recuperare le opzioni Internet usando le funzioni InternetSetOption e InternetQueryOption .
Le opzioni Internet possono essere impostate o recuperate da, da un handle DELLNET specificato o dalle impostazioni correnti in Microsoft Internet Explorer.
- Passaggi di implementazione
- Ambito dell'handle DELLA RETE DI AZURE
- Impostazione di singole opzioni
- Recupero di singole opzioni
- Impostazione delle opzioni di connessione
- Recupero delle opzioni di connessione
- Argomenti correlati
Passaggi di implementazione
Per impostare o recuperare le opzioni Internet, completare le operazioni seguenti:
- Scelta delle opzioni Internet
- Scelta dell'handle DELL'interfaccia DI RETE
- Impostazione o recupero delle opzioni
Scelta delle opzioni Internet
Poiché ci sono così tante opzioni Internet, scegliere le opzioni giuste è importante. Molte opzioni Internet influiscono sul comportamento delle funzioni WinINet e di Internet Explorer:
Ad esempio, è possibile:
- Gestire l'autenticazione di base del server e del proxy impostando nomi utente e password.
- Impostare o recuperare la stringa dell'agente utente utilizzata dai server per identificare le funzionalità dell'applicazione client o del browser.
- Recuperare il tipo di handle dell'handle DELLANET SPECIFICATO .
Per altre informazioni e un elenco delle opzioni Internet, vedere Flag di opzione.
In Internet Explorer 5 e versioni successive alcune opzioni possono essere impostate o recuperate da una connessione Internet specifica usando le strutture INTERNET_PER_CONN_OPTION_LIST e INTERNET_PER_CONN_OPTION . Per altre informazioni e un elenco di opzioni che possono essere impostate o recuperate da una connessione Internet specifica, vedere il membro dwOptions della struttura INTERNET_PER_CONN_OPTION .
Scelta dell'handle DELL'interfaccia DI RETE
L'handle DELLA RETE GESTITA utilizzato per impostare o recuperare le opzioni Internet determina l'ambito dell'operazione. Tutti gli handle creati tramite questo handle erediteranno le opzioni impostate su questo handle.
Ad esempio, le applicazioni client che richiedono un proxy con autenticazione, probabilmente non richiedono l'impostazione del nome utente e della password proxy ogni volta che l'applicazione tenta di accedere a una risorsa Internet. Se tutte le richieste in una determinata connessione vengono gestite dallo stesso proxy, impostando il nome utente proxy e la password su un handle DI CONNESSIONE DI TIPO DI CONNESSIONE, ovvero un handle creato da una chiamata a InternetConnect, consentirà a tutte le chiamate derivate da questo handle DELLANET di utilizzare lo stesso nome utente proxy e la stessa password. L'impostazione del nome utente e della password del proxy ogni volta che viene creato un handle DELLA RETE GESTITA da HttpOpenRequest richiede un sovraccarico aggiuntivo e non necessario. Tenere presente che se l'applicazione usa un proxy che richiede l'autenticazione, deve impostare le credenziali proxy per ogni nuova connessione.
Impostazione o recupero delle opzioni
Quando sono state determinate le opzioni Internet e l'handle DELLANET DA usare, recuperare tali opzioni Internet. Per impostare o recuperare le opzioni, chiamare InternetQueryOption o InternetSetOption.
Ambito dell'handle DELLA RETE DI AZURE
L'handle DELL'OGGETTONET utilizzato per impostare o recuperare le opzioni Internet determina le azioni per le quali le opzioni sono valide.
Questi handle hanno tre livelli:
- L'handle ROOT XAMLNET (creato da una chiamata a InternetOpen) conterrà tutte le opzioni Internet che influiscono su questa istanza di WinINet.
- HANDLE DI GESTIONE CHE si connettono a un server (creato da una chiamata a InternetConnect)
- Handle DELL'interfaccia DELLA RETE associata a una risorsa o a un'enumerazione di risorse in un determinato server.
Oltre ai vari handle DELLA RETE, un'applicazione può anche usare NULL per impostare o recuperare i valori predefiniti delle opzioni Internet usate da Internet Explorer e dalle funzioni WinINet. L'impostazione delle opzioni Internet quando si usa NULL come handle modifica i valori predefiniti delle opzioni, attualmente archiviati nel Registro di sistema. Le applicazioni client non devono usare le funzioni del Registro di sistema per modificare i valori predefiniti delle opzioni Internet, perché l'implementazione della modalità di archiviazione delle opzioni può essere modificata in futuro.
Nella tabella seguente sono elencati il tipo di handle DELL'interfaccia e l'ambito delle opzioni Internet associate.
Tipo handle | Ambito |
---|---|
NULL | Impostazioni delle opzioni predefinite per Internet Explorer. |
INTERNET_HANDLE_TYPE_CONNECT_FTP | Impostazioni delle opzioni per questa connessione a un server FTP. Queste opzioni influiscono su tutte le operazioni avviate da questo handle DELLANET, ad esempio i download di file. |
INTERNET_HANDLE_TYPE_CONNECT_GOPHER | Impostazioni dell'opzione per questa connessione a un server Gopher. Queste opzioni influiscono su tutte le operazioni avviate da questo handle DELLANET, ad esempio i download di file.
Nota: Solo Windows XP e Windows Server 2003 R2 e versioni precedenti. |
INTERNET_HANDLE_TYPE_CONNECT_HTTP | Impostazioni dell'opzione per questa connessione a un server HTTP. Queste opzioni influiscono su tutte le operazioni avviate da questo handle DELLANET, ad esempio i download di file. |
INTERNET_HANDLE_TYPE_FILE_REQUEST | Impostazioni dell'opzione associate a questa richiesta di file. |
INTERNET_HANDLE_TYPE_FTP_FILE | Impostazioni delle opzioni associate al download di questa risorsa FTP. |
INTERNET_HANDLE_TYPE_FTP_FILE_HTML | Le impostazioni delle opzioni associate a questo download di risorse FTP formattate in HTML. |
INTERNET_HANDLE_TYPE_FTP_FIND | Impostazioni delle opzioni associate a questa ricerca di file in un server FTP. |
INTERNET_HANDLE_TYPE_FTP_FIND_HTML | Impostazioni delle opzioni associate a questa ricerca di file in un server FTP formattato in HTML. |
INTERNET_HANDLE_TYPE_GOPHER_FILE | Impostazioni delle opzioni associate al download della risorsa Gopher.
Nota: Solo Windows XP e Windows Server 2003 R2 e versioni precedenti. |
INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML | Le impostazioni delle opzioni associate a questo download di risorse Gopher formattate in HTML.
Nota: Solo Windows XP e Windows Server 2003 R2 e versioni precedenti. |
INTERNET_HANDLE_TYPE_GOPHER_FIND | Impostazioni delle opzioni associate a questa ricerca di file in un server Gopher.
Nota: Solo Windows XP e Windows Server 2003 R2 e versioni precedenti. |
INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML | Le impostazioni delle opzioni associate a questa ricerca di file in un server Gopher formattato in HTML.
Nota: Solo Windows XP e Windows Server 2003 R2 e versioni precedenti. |
INTERNET_HANDLE_TYPE_HTTP_REQUEST | Impostazioni delle opzioni associate a questa richiesta HTTP. |
INTERNET_HANDLE_TYPE_INTERNET | Impostazioni delle opzioni associate a questa istanza delle funzioni WinINet. |
Impostazione di singole opzioni
Dopo aver determinato le opzioni Internet da impostare e l'ambito desiderato da queste opzioni, l'impostazione delle opzioni Internet non è complicata. È sufficiente chiamare la funzione InternetSetOption con l'handle DELLNET desiderato, il flag di opzione Internet e un buffer contenente le informazioni che si desidera impostare.
Nell'esempio seguente viene illustrato come impostare il nome utente e la password proxy in un handle DELLNET specificato.
// strUsername is a string buffer of cchMax characters or less.
// It contains the proxy user name.
size_t cchMax = 80;
size_t cchUserLength, cchPasswordLength;
HRESULT hr = StringCchLength(strUsername, cchMax, &cchUserLength);
if (SUCCEEDED(hr))
{
// hOpen is the HINTERNET handle created by InternetConnect.
InternetSetOption(hConnect, INTERNET_OPTION_PROXY_USERNAME,
strUsername, DWORD(cchUserLength)+1);
}
else
{
// Insert error handling code here.
}
// strPassword is the string buffer that contains the proxy password.
hr = StringCchLength(strPassword, cchMax, &cchPasswordLength);
InternetSetOption(hOpen, INTERNET_OPTION_PROXY_PASSWORD,
strPassword, DWORD(cchPasswordLength)+1);
Recupero di singole opzioni
Le opzioni Internet possono essere recuperate usando la funzione InternetQueryOption . Per recuperare le opzioni Internet:
Determinare le dimensioni del buffer necessarie per recuperare le informazioni sull'opzione Internet.
Le dimensioni del buffer possono essere determinate usando NULL per l'indirizzo del buffer e passandolo una dimensione del buffer pari a zero.
DWORD dwSize; InternetQueryOption(NULL, INTERNET_OPTION_USER_AGENT, NULL, &dwSize);
Il valore restituito da InternetQueryOption è la quantità di memoria necessaria per recuperare le informazioni, in byte.
Allocare una memoria per il buffer.
char *lpszData; lpszData = new char[dwSize];
Recuperare i dati.
InternetQueryOption( NULL, INTERNET_OPTION_USER_AGENT, lpszData, &dwSize );
Liberare la memoria.
delete [] lpszData;
Esempio completo
Di seguito è riportato l'esempio completo usato nella sezione precedente. Questo esempio illustra come recuperare la stringa dell'agente utente predefinita.
// This call determines the required buffer size.
DWORD dwSize;
InternetQueryOption(NULL, INTERNET_OPTION_USER_AGENT, NULL, &dwSize);
// Allocate the necessary memory.
char *lpszData;
lpszData = new char[dwSize];
// Call InternetQueryOption again with the provided buffer.
InternetQueryOption( NULL,
INTERNET_OPTION_USER_AGENT,
lpszData, &dwSize );
// Insert code here to use the user agent string data.
// Free the allocated memory.
delete [] lpszData;
Impostazione delle opzioni di connessione
In Internet Explorer 5 e versioni successive è possibile impostare opzioni Internet per una connessione specifica. In precedenza, tutte le connessioni hanno condiviso le stesse impostazioni dell'opzione Internet. Per impostare le opzioni per una connessione specifica:
- Creare una struttura INTERNET_PER_CONN_OPTION_LIST .
- Allocare la memoria per le singole opzioni Internet che si desidera impostare per la connessione.
- Impostare le opzioni nelle strutture INTERNET_PER_CONN_OPTION .
- Impostare le opzioni usando InternetSetOption.
Nell'esempio di codice seguente viene illustrato come impostare i dati proxy per una connessione LAN.
BOOL SetConnectionOptions()
{
INTERNET_PER_CONN_OPTION_LIST list;
BOOL bReturn;
DWORD dwBufSize = sizeof(list);
// Fill the list structure.
list.dwSize = sizeof(list);
// NULL == LAN, otherwise connectoid name.
list.pszConnection = NULL;
// Set three options.
list.dwOptionCount = 3;
list.pOptions = new INTERNET_PER_CONN_OPTION[3];
// Ensure that the memory was allocated.
if(NULL == list.pOptions)
{
// Return FALSE if the memory wasn't allocated.
return FALSE;
}
// Set flags.
list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT |
PROXY_TYPE_PROXY;
// Set proxy name.
list.pOptions[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
list.pOptions[1].Value.pszValue = TEXT("https://proxy:80");
// Set proxy override.
list.pOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
list.pOptions[2].Value.pszValue = TEXT("local");
// Set the options on the connection.
bReturn = InternetSetOption(NULL,
INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);
// Free the allocated memory.
delete [] list.pOptions;
return bReturn;
}
Recupero delle opzioni di connessione
In Internet Explorer 5 e versioni successive è possibile recuperare le opzioni Internet da una connessione specifica. Per recuperare le opzioni da una connessione specifica:
- Creare una struttura INTERNET_PER_CONN_OPTION_LIST .
- Allocare la memoria per le singole opzioni Internet da recuperare dalla connessione.
- Specificare le opzioni usando le strutture INTERNET_PER_CONN_OPTION .
- Recuperare le opzioni usando InternetQueryOption.
- Utilizzare i dati delle opzioni.
- Liberare la memoria allocata per contenere i dati delle opzioni usando la funzione GlobalFree .
Nota
WinINet non supporta le implementazioni del server. Inoltre, non deve essere usato da un servizio. Per le implementazioni o i servizi server usano Microsoft Windows HTTP Services (WinHTTP).