Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Normaal gesproken worden HTTP-servertaken in een specifieke volgorde uitgevoerd; Dat wil gezegd: één taak moet worden voltooid en de uitvoer die is verkregen voordat de volgende taak begint.
Er wordt een taakpagina gemaakt om voorbeeldcode weer te geven over specifieke taken die een HTTP Server-toepassing uitvoert. Een taakpagina is gekoppeld aan het C-extensiebestand van het HTTP-servervoorbeeld. Wanneer u de PSDK installeert op station C:\ van een lokale computer, wordt de volledige servervoorbeeldtoepassing geïnstalleerd op C:\Program Files\Microsoft SDK\Samples\netds\http\server.
In de volgende lijst worden de HTTP-servertaken geïdentificeerd:
- de HTTP-service- initialiseren
- de URL's registreren om op te luisteren
- de routine bellen om een aanvraag te ontvangen
- de aanvraag ontvangen
- de HTTP-aanvraag verwerken
- het HTTP-antwoord verzenden
- het HTTP POST-antwoord verzenden
- de HTTP Server-API- opschonen
De HTTP-service initialiseren
De HTTP-service wordt geïnitialiseerd met behulp van de functie HttpInitialize en de ingang voor de aanvraagwachtrij wordt gemaakt met behulp van HttpCreateHttpHandle-. De server moet worden geïnitialiseerd voordat andere serverfuncties kunnen worden aangeroepen. De aanvraagwachtrij moet worden gemaakt voordat de service URL's kan registreren om te luisteren naar binnenkomende HTTP-aanvragen.
Zie initialiseer de HTTP-servicevoor meer informatie en een codevoorbeeld.
De URL's registreren om op te luisteren
Om de HTTP Server-API te laten luisteren naar binnenkomende aanvragen, worden specifieke URL's geregistreerd bij de API door de functie HttpAddUrl- aan te roepen. Binnenkomende aanvragen die overeenkomen met deze URL's worden doorgestuurd naar de aanvraagwachtrij die in deze aanroep is opgegeven.
Zie De URL's registreren om te luisteren opvoor meer informatie en een codevoorbeeld.
De routine bellen om een aanvraag te ontvangen
De functie DoReceiveRequest wijst de aanvraagbuffer toe, initialiseert de aanvraag-id en start de lus om aanvragen te ontvangen.
Zie De routine bellen om een aanvraag te ontvangenvoor meer informatie en een codevoorbeeld.
De aanvraag ontvangen
De HTTP Server-API levert een aanvraagstructuur voor het opslaan van de geparseerde binnenkomende aanvraag. Deze structuur wordt toegewezen door de toepassing en geïnitialiseerd wanneer een binnenkomende aanvraag wordt ontvangen. De toepassing roept de HttpReceiveHttpRequest-functie aan om de aanvraag te ontvangen. Als de aanvraagbuffer te klein is om de aanvraag te ontvangen, kan de toepassing de buffergrootte vergroten en HttpReceiveHttpRequest opnieuw aanroepen om de hele aanvraag te ontvangen.
Zie Een aanvraag ontvangenvoor meer informatie en een codevoorbeeld.
De HTTP-aanvraag verwerken
In de voorbeeldtoepassing ziet u hoe u de HTTP GET- en POST-aanvraagopdrachten kunt verwerken. De toepassing verzendt een fout 503 (NOT_IMPLEMENTED) als er werkwoorden aanwezig zijn in de aanvraag die de toepassing niet verwerkt.
De URL die moet worden gebruikt bij het verwerken van aanvragen, is de verwerkte URL in de CookedUrl- lid van de HTTP_REQUEST_V1-structuur. Niet de niet-verwerkte URL in de pRawUrl lid, dat uitsluitend bestemd is voor tracering en statistische doeleinden.
Zie de HTTP-aanvraagverwerken voor meer informatie en een codevoorbeeld.
Het HTTP-antwoord verzenden
De antwoordstructuur wordt toegewezen en geïnitialiseerd met de statuscode en een redenzin in de INITIALIZE_HTTP_RESPONSE macro. Een bekende HTTP-header wordt toegevoegd aan de antwoordstructuur in de ADD_KNOWN_HEADER macro en de hoofdtekst van de entiteit wordt toegevoegd aan het antwoord vanuit een gegevensblok uit het geheugen. De functie HttpSendHttpResponse wordt aangeroepen om het antwoord te verzenden. In dit voorbeeld verzendt de toepassing een eenvoudig 200 OK-antwoord op de GET-aanvraag.
Zie Een HTTP-antwoord verzendenvoor meer informatie en een codevoorbeeld.
Het HTTP POST-antwoord verzenden
De POST-aanvraag vereist meer verwerking dan de GET-aanvraag. De hoofdtekst van de aanvraagentiteit wordt ontvangen door de functie HttpReceiveRequestEntityBody aan te roepen. De toepassing verzendt het antwoord en de hoofdtekst van de antwoordentiteit in afzonderlijke aanroepen naar de HTTP Server-API. De antwoordheaders worden verzonden met de HttpSendHttpResponse-. De hoofdtekst van de entiteit wordt verzonden in een gegevensblok van een bestandsgreep met de functie HttpSendResponseEntityBody.
Zie Een HTTP POST-antwoord verzendenvoor meer informatie en een codevoorbeeld.
De HTTP Server-API opschonen
De opschoonbewerkingen voor de HTTP Server-API zijn onder andere:
- Alle geregistreerde URL's verwijderen.
- Sluit de ingang naar de aanvraagwachtrij.
- De resources beëindigen die zijn gemaakt door de HTTP Server-API.
De toepassing roept de functie HttpRemoveUrl- aan om de registratie van URL's ongedaan te maken die zijn geregistreerd door de initiële httpAddUrl--functie. De toepassing roept ook HttpTerminate- aan voor elke aanroep naar HttpInitialize met overeenkomende vlaginstellingen. Met deze aanroep worden alle resources beëindigd die zijn gemaakt door de aanroep naar HttpInitialize.
Zie De HTTP Server-APIopschonen voor meer informatie en een codevoorbeeld.