Delen via


Internetopties instellen en ophalen

In dit onderwerp wordt beschreven hoe u internetopties instelt en ophaalt met behulp van de functies InternetSetOption en InternetQueryOption-.

Internetopties kunnen worden ingesteld op of opgehaald uit een opgegeven HINTERNET handle of de huidige instellingen in Microsoft Internet Explorer.

Implementatiestappen

Als u internetopties wilt instellen of ophalen, gaat u als volgt te werk:

Internetopties kiezen

Omdat er zoveel internetopties zijn, is het kiezen van de juiste opties belangrijk. Veel internetopties zijn van invloed op het gedrag van de WinINet-functies en Internet Explorer:

U kunt bijvoorbeeld het volgende doen:

  • Afhandelen van basisserver- en proxyverificatie door gebruikersnamen en wachtwoorden in te stellen.
  • Stel de gebruikersagenttekenreeks in die door servers wordt gebruikt of haal deze op om de functies van de clienttoepassing of browser te identificeren.
  • Haal het handvattype van het opgegeven HINTERNET handvat op.

Zie Option flagsvoor meer informatie en een lijst met internetopties.

In Internet Explorer 5 en hoger kunnen sommige opties worden ingesteld of opgehaald uit een specifieke internetverbinding met behulp van de INTERNET_PER_CONN_OPTION_LIST- en INTERNET_PER_CONN_OPTION structuren. Voor meer informatie en een lijst met opties die kunnen worden ingesteld of opgehaald uit een specifieke internetverbinding, zie het dwOptions-element van de INTERNET_PER_CONN_OPTION-structuur.

De HINTERNET-handgreep kiezen

De ACHTERNET- ingang die wordt gebruikt om internetopties in te stellen of op te halen, bepaalt het bereik van de bewerking. Alle ingangen die via deze ingang zijn gemaakt, nemen de opties over die op deze ingang zijn ingesteld.

Clienttoepassingen die bijvoorbeeld een proxy met verificatie vereisen, hoeven waarschijnlijk niet telkens de gebruikersnaam en het wachtwoord van de proxy in te stellen wanneer de toepassing toegang probeert te krijgen tot een internetresource. Als alle aanvragen voor een bepaalde verbinding worden verwerkt door dezelfde proxy, stelt u de gebruikersnaam en het wachtwoord van de proxy in op een verbindingstype HINTERNET handle. Dat wil zeggen, een handle die is gemaakt door een aanroep naar InternetConnect, zodat alle aanroepen die zijn afgeleid van deze HINTERNET- handle dezelfde proxygebruikersnaam en hetzelfde wachtwoord kunnen gebruiken. Het instellen van de proxygebruikersnaam en het wachtwoord telkens wanneer een ACHTERNET ingang wordt gemaakt door HttpOpenRequest- extra en onnodige overhead vereist. Houd er rekening mee dat als de toepassing gebruikmaakt van een proxy waarvoor verificatie is vereist, de proxyreferenties voor elke nieuwe verbinding moet worden ingesteld.

De opties instellen of ophalen

Wanneer u hebt bepaald welke internetopties en HINTERNET handle te gebruiken, haalt u deze internetopties op. Als u opties wilt instellen of ophalen, roept u InternetQueryOption- of InternetSetOption-aan.

Bereik van HINTERNET-handle

De HINTERNET- handle die wordt gebruikt om internetopties in te stellen of op te halen, bepaalt de acties waarvoor de opties geldig zijn.

Deze ingangen hebben drie niveaus:

  • De hoofd-HINTERNET handle (gemaakt door een aanroep naar InternetOpen) bevat alle internetopties die van invloed zijn op dit exemplaar van WinINet.
  • ACHTERNET handvatten die verbinding maken met een server (gemaakt door een aanroep van InternetConnect)
  • HINTERNET handles die zijn gekoppeld aan een resource of een opsomming van resources op een bepaalde server.

Naast de verschillende ACHTERNET- ingangen, kan een toepassing ook NULL- gebruiken om de standaardwaarden in te stellen of op te halen van de internetopties die worden gebruikt door Internet Explorer en de WinINet-functies. Als u internetopties instelt met NULL als de referentie, worden de standaardwaarden van de opties gewijzigd, die momenteel zijn opgeslagen in het register. Clienttoepassingen mogen geen registerfuncties gebruiken om de standaardwaarden van de internetopties te wijzigen, omdat de implementatie van de opslagopties in de toekomst kan worden gewijzigd.

De volgende tabel bevat het type HINTERNET handvatten en de reikwijdte van de internetopties die eraan zijn gekoppeld.

Handvat Type Draagwijdte
NULL De standaardoptie-instellingen voor Internet Explorer.
INTERNET_HANDLE_TYPE_CONNECT_FTP De optie-instellingen voor deze verbinding met een FTP-server. Deze opties zijn van invloed op bewerkingen die worden gestart vanuit deze HINTERNET handvat, zoals bestandsdownloads.
INTERNET_HANDLE_TYPE_CONNECT_GOPHER De optie-instellingen voor deze verbinding met een Gopher-server. Deze opties zijn van invloed op bewerkingen die vanuit deze HINTERNET handle worden gestart, zoals bestandsdownloads. Opmerking: alleen Windows XP en Windows Server 2003 R2 en oudere versies.
INTERNET_HANDEL_TYPE_VERBIND_HTTP De optie-instellingen voor deze verbinding met een HTTP-server. Deze opties zijn van invloed op bewerkingen die worden geïnitieerd vanuit deze HINTERNET ingang, zoals bestandsdownloads.
INTERNET_HANDTYPE_BESTANDSAANVRAAG De optie-instellingen die zijn gekoppeld aan deze bestandsaanvraag.
INTERNET_HANDLE_TYPE_FTP_FILE De optie-instellingen die zijn gekoppeld aan deze FTP-resourcedownload.
INTERNET_HANDLE_TYPE_FTP_FILE_HTML De optie-instellingen die aan deze FTP-resourcedownload zijn gekoppeld, zijn opgemaakt in HTML.
INTERNET_HANDLE_TYPE_FTP_FIND De optie-instellingen die zijn gekoppeld aan deze zoekopdracht naar bestanden op een FTP-server.
INTERNET_HANDLE_TYPE_FTP_FIND_HTML De optie-instellingen die zijn gekoppeld aan deze zoekopdracht naar bestanden op een FTP-server die is opgemaakt in HTML.
INTERNET_HANDLE_TYPE_GOPHER_FILE De optie-instellingen die zijn gekoppeld aan het downloaden van deze Gopher-resource. Opmerking: alleen Windows XP en Windows Server 2003 R2 en eerder.
INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML De optie-instellingen die verbonden zijn met deze Gopher-resourcedownload, zijn in HTML opgemaakt. Opmerking: alleen Windows XP en Windows Server 2003 R2 en eerder.
INTERNET_HANDLE_TYPE_GOPHER_FIND De optie-instellingen die zijn gekoppeld aan deze zoekopdracht naar bestanden op een Gopher-server. Opmerking: alleen van toepassing op Windows XP en Windows Server 2003 R2 en eerder.
INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML De optie-instellingen die zijn gekoppeld aan deze zoekopdracht naar bestanden op een Gopher-server die is opgemaakt in HTML. Opmerking: alleen Windows XP en Windows Server 2003 R2 en eerder.
INTERNET_HANDLE_TYPE_HTTP_REQUEST De optie-instellingen die zijn gekoppeld aan deze HTTP-aanvraag.
INTERNET_HANDLE_TYPE_INTERNET De optie-instellingen die zijn gekoppeld aan dit exemplaar van de WinINet-functies.

Afzonderlijke opties instellen

Nadat u de internetopties hebt bepaald die u wilt instellen en het bereik dat u wilt toepassen op deze opties, is het instellen van internetopties niet ingewikkeld. U hoeft alleen maar de functie InternetSetOption aan te roepen met de gewenste HINTERNET handle, een internetoptievlag en een buffer die de gegevens bevat die u wilt instellen.

In het volgende voorbeeld ziet u hoe u de gebruikersnaam en het wachtwoord van de proxy instelt op een opgegeven ACHTERNET ingang.

// 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);

Afzonderlijke opties ophalen

Internetopties kunnen worden opgehaald met behulp van de functie InternetQueryOption. Internetopties raadplegen:

  1. Bepaal de buffergrootte die nodig is om de informatie over de internetoptie op te halen.

    De buffergrootte kan worden bepaald door NULL- te gebruiken voor het adres van de buffer en deze door te geven aan een buffergrootte van nul.

    DWORD dwSize;
    InternetQueryOption(NULL, INTERNET_OPTION_USER_AGENT, NULL, &dwSize);
    

    De waarde die wordt geretourneerd door InternetQueryOption- is de hoeveelheid geheugen die nodig is om de informatie in bytes op te halen.

  2. Wijs een geheugen toe voor de buffer.

    char *lpszData;
    lpszData = new char[dwSize];
    
  3. Haal de gegevens op.

    InternetQueryOption( NULL, 
                         INTERNET_OPTION_USER_AGENT,
                         lpszData, &dwSize );
    
  4. Maak het geheugen vrij.

    delete [] lpszData;
    

Volledig voorbeeld

Hier volgt het volledige voorbeeld dat in de vorige sectie wordt gebruikt. In dit voorbeeld ziet u hoe u de standaardtekenreeks voor de gebruikersagent ophaalt.

// 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;

Verbindingsopties instellen

In Internet Explorer 5 en hoger kunnen internetopties worden ingesteld voor een specifieke verbinding. Voorheen hebben alle verbindingen dezelfde instellingen voor internetopties gedeeld. Opties instellen voor een bepaalde verbinding:

  1. Maak een INTERNET_PER_CONN_OPTION_LIST structuur.
  2. Wijs het geheugen toe voor de afzonderlijke internetopties die u wilt instellen voor de verbinding.
  3. Stel in de structuren van INTERNET_PER_CONN_OPTION de opties in.
  4. Stel de opties in met InternetSetOption-.

In het volgende codevoorbeeld ziet u hoe u proxygegevens instelt voor een LAN-verbinding.

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;
}

Verbindingsopties ophalen

In Internet Explorer 5 en hoger kunnen internetopties worden opgehaald uit een specifieke verbinding. Opties ophalen uit een bepaalde verbinding:

  1. Maak een INTERNET_PER_CONN_OPTION_LIST structuur.
  2. Wijs het geheugen toe voor de afzonderlijke internetopties die moeten worden opgehaald uit de verbinding.
  3. Geef de opties op met behulp van INTERNET_PER_CONN_OPTION structuren.
  4. Haal de opties op met InternetQueryOption-.
  5. Gebruik de optiegegevens.
  6. Maak het geheugen vrij, toegewezen voor het opslaan van de optiegegevens met behulp van de functie GlobalFree.

Notitie

WinINet biedt geen ondersteuning voor serverimplementaties. Daarnaast mag deze niet worden gebruikt vanuit een service. Voor server-implementaties of -services wordt Microsoft Windows HTTP Services (WinHTTP)gebruikt.

Authenticatie afhandelen

HINTERNET verwerkt