Condividi tramite


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

Per impostare o recuperare le opzioni Internet, completare le operazioni seguenti:

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:

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:

  1. 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.

  2. Allocare una memoria per il buffer.

    char *lpszData;
    lpszData = new char[dwSize];
    
  3. Recuperare i dati.

    InternetQueryOption( NULL, 
                         INTERNET_OPTION_USER_AGENT,
                         lpszData, &dwSize );
    
  4. 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:

  1. Creare una struttura INTERNET_PER_CONN_OPTION_LIST .
  2. Allocare la memoria per le singole opzioni Internet che si desidera impostare per la connessione.
  3. Impostare le opzioni nelle strutture INTERNET_PER_CONN_OPTION .
  4. 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:

  1. Creare una struttura INTERNET_PER_CONN_OPTION_LIST .
  2. Allocare la memoria per le singole opzioni Internet da recuperare dalla connessione.
  3. Specificare le opzioni usando le strutture INTERNET_PER_CONN_OPTION .
  4. Recuperare le opzioni usando InternetQueryOption.
  5. Utilizzare i dati delle opzioni.
  6. 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).

Gestione dell'autenticazione

Handle HINTERNET