Overzicht van HTTP Server-API

De volgende lijst bevat een typische reeks bewerkingen die gebruikmaken van de HTTP Server-API:

In bewerkingen die URL's gebruiken, moet u er rekening mee houden dat dit de verwerkte URL is die is opgenomen in de CookedUrl- lid van de HTTP_REQUEST_V1-structuur die moet worden gebruikt. Gebruik de niet-verwerkte URL niet in de pRawUrl lid, dat uitsluitend bestemd is voor tracering en statistische doeleinden.

Elke toepassing maakt een eigen aanvraagwachtrij. Een toepassing verkrijgt zijn aanvraagwachtrijgreep van HttpCreateHttpHandle. Deze ingang wordt doorgegeven aan de HttpAddUrl--functie om een URL toe te voegen aan de aanvraagwachtrij. De toepassing ontvangt een melding van een binnenkomende aanvraag en haalt deze op uit de aanvraagwachtrij door de HttpReceiveHttpRequest-functie aan te roepen met de aanvraagwachtrijgreep. U kunt deze functie gebruiken om de aanvraagheaders of zowel de headers als de hoofdtekst van de entiteit te ontvangen. HttpReceiveHttpRequest retourneert ook een aanvraag-id (RequestId) voor de ontvangen aanvraag die uniek is voor de aanvraag-handle.

Notitie

Het is de verantwoordelijkheid van de toepassing om alle relevante aanvraagheaders te onderzoeken, met inbegrip van headers voor inhoudsonderhandeling als deze worden gebruikt, en om op basis van de headerinhoud aanvragen te laten mislukken indien nodig. De HTTP Server-API zorgt ervoor dat elke headerregel correct wordt beëindigd en geen ongeldige tekens bevat.

 

Gebruik de functie HttpReceiveRequestEntityBody met de aanvraagwachtrijgreep om volgende gedeelten van de hoofdtekst van de entiteit van een aanvraag op te halen, indien van toepassing.

Notitie

De HTTP Server-API ontsleutelt gesegmenteerde berichten aan de ontvangstzijde, maar voert geen gesegmenteerde codering uit aan de verzendzijde. Als segmentering vereist is aan de verzendzijde, moet de toepassing deze implementeren. Zie RFC 2616voor meer informatie over gesegmenteerde codering.

 

Gebruik de functie HttpReceiveClientCertificate met toepassingen die URL's verwerken met behulp van een beveiligd schema ('https') om eventueel de certificaatgegevens van de client op te halen.

Antwoorden worden verzonden met de functie HttpSendHttpResponse-. Deze functie gebruikt de RequestId van de bijbehorende aanvraag om het antwoord te verzenden. Een antwoord kan na verloop van tijd in verschillende API-aanroepen worden verzonden door de HttpSendResponseEntityBody-functie aan te roepen met de RequestId van de oorspronkelijk ontvangen aanvraag.

Notitie

Standaard gebruikt HttpSendHttpResponse- 'Microsoft-HTTPAPI/1.0' als de header Server:. Als een toepassing een serverheader in een antwoord opgeeft, wordt die waarde als het eerste deel van de serverheader geplaatst, gevolgd door een spatie en vervolgens 'Microsoft-HTTPAPI/1.0'.

 

Over het algemeen verbergt de HTTP Server API details van verbindingsbeheer en hun opzet en afbraak voor toepassingen. Een toepassing kan echter optioneel beëindiging van een verbinding detecteren door HttpWaitForDisconnect-aan te roepen.

Toepassingen moeten worden opgeschoond met behulp van de volgende stappen:

  • Wanneer de toepassing niet luistert of reageert op een URL, wordt de URL verwijderd met behulp van de functie HttpRemoveURL.
  • Wanneer de toepassing klaar is met het gebruik van de aanvraagwachtrij, sluit u de aanvraagwachtrij met behulp van de functie CloseHandle.
  • Wanneer de toepassing klaar is met de HTTP Server-API, roept u de httpterminate--functie aan.