HTTP-Servertasks
In der Regel werden HTTP-Serveraufgaben in einer bestimmten Reihenfolge ausgeführt. Das heißt, dass eine Aufgabe abgeschlossen und die Ausgabe abgerufen werden muss, bevor die nächste Aufgabe beginnt.
Eine Aufgabenseite wird erstellt, um Beispielcode zu bestimmten Aufgaben anzuzeigen, die von einer HTTP-Serveranwendung ausgeführt werden. Eine Aufgabenseite enthält Links zur C-Erweiterungsdatei des HTTP-Serverbeispiels. Wenn Sie das PSDK auf Laufwerk C: \ eines lokalen Computers installieren, wird die vollständige Serverbeispielanwendung unter C: \ Programme Microsoft SDK Samples \ \ \ netds http \ server \ installiert.
In der folgenden Liste sind die HTTP-Serveraufgaben aufgeführt:
- Initialisieren des HTTP-Diensts
- Registrieren der URLs zum Lauschen
- Aufrufen der Routine zum Empfangen einer Anforderung
- Empfangen der Anforderung
- Verarbeiten der HTTP-Anforderung
- Senden der HTTP-Antwort
- Senden der HTTP POST-Antwort
- Bereinigen der HTTP-Server-API
Initialisieren des HTTP-Diensts
Der HTTP-Dienst wird mithilfe der HttpInitialize-Funktion initialisiert, und das Handle für die Anforderungswarteschlange wird mit httpCreateHttpHandleerstellt. Der Server muss initialisiert werden, bevor andere Serverfunktionen aufgerufen werden können. Die Anforderungswarteschlange muss erstellt werden, bevor der Dienst URLs registrieren kann, um auf eingehende HTTP-Anforderungen zu lauschen.
Weitere Informationen und ein Codebeispiel finden Sie unter Initialisieren des HTTP-Diensts.
Registrieren der URLs zum Lauschen
Damit die HTTP-Server-API auf eingehende Anforderungen lauscht, werden bestimmte URLs bei der API registriert, indem die HttpAddUrl-Funktion aufgerufen wird. Eingehende Anforderungen, die diesen URLs entsprechen, werden an die in diesem Aufruf angegebene Anforderungswarteschlange weitergeleitet.
Weitere Informationen und ein Codebeispiel finden Sie unter Registrieren der URLs zum Lauschen auf.
Aufrufen der Routine zum Empfangen einer Anforderung
Die DoReceiveRequest-Funktion ordnet den Anforderungspuffer zu, initialisiert die Anforderungs-ID und startet die Schleife zum Empfangen von Anforderungen.
Weitere Informationen und ein Codebeispiel finden Sie unter Aufrufen der Routine zum Empfangen einer Anforderung.
Empfangen der Anforderung
Die HTTP-Server-API stellt eine Anforderungsstruktur zum Speichern der analysierten eingehenden Anforderung bereit. Diese Struktur wird von der Anwendung zugeordnet und initialisiert, wenn eine eingehende Anforderung empfangen wird. Die Anwendung ruft die HttpReceiveHttpRequest-Funktion auf, um die Anforderung zu empfangen. Wenn der Anforderungspuffer zu klein ist, um die Anforderung zu empfangen, kann die Anwendung die Puffergröße erhöhen und HttpReceiveHttpRequest erneut aufrufen, um die gesamte Anforderung zu empfangen.
Weitere Informationen und ein Codebeispiel finden Sie unter Empfangen einer Anforderung.
Verarbeiten der HTTP-Anforderung
Die Beispielanwendung zeigt, wie die HTTP GET- und POST-Anforderungsverben behandelt werden. Die Anwendung sendet den Fehler 503 (NOT _ IMPLEMENTED), wenn Verben in der Anforderung vorhanden sind, die von der Anwendung nicht verarbeitet werden.
Beachten Sie, dass die URL, die bei der Verarbeitung von Anforderungen verwendet werden soll, die verarbeitete URL ist, die im CookedUrl-Member der HTTP REQUEST _ _ V1-Struktur enthalten ist. Verwenden Sie nicht die nicht verarbeitete URL im pRawUrl-Member, die ausschließlich zu Nachverfolgungs- und statistischen Zwecken dient.
Weitere Informationen und ein Codebeispiel finden Sie unter Verarbeiten der HTTP-Anforderung.
Senden der HTTP-Antwort
Die Antwortstruktur wird zugeordnet und mit dem Statuscode und einem Grundphrase im INITIALIZE _ HTTP _ RESPONSE-Makro initialisiert. Ein bekannter HTTP-Header wird der Antwortstruktur im _ ADD KNOWN _ HEADER-Makro hinzugefügt, und der Entitätstext wird der Antwort aus einem Datenblock aus dem Arbeitsspeicher hinzugefügt. Die HttpSendHttpResponse-Funktion wird aufgerufen, um die Antwort zu senden. In diesem Beispiel sendet die Anwendung eine einfache 200 OK-Antwort an die GET-Anforderung.
Weitere Informationen und ein Codebeispiel finden Sie unter Senden einer HTTP-Antwort.
Senden der HTTP POST-Antwort
Die POST-Anforderung erfordert mehr Verarbeitung als die GET-Anforderung. Der Anforderungsentitätstext wird durch Aufrufen der HttpReceiveRequestEntityBody-Funktion empfangen. Die Anwendung sendet die Antwort und den Antwortentitätstext in separaten Aufrufen an die HTTP-Server-API. Die Antwortheader werden mit httpSendHttpResponsegesendet. Der Entitätstext wird in einem Datenblock von einem Dateihandle mit der HttpSendResponseEntityBody-Funktion gesendet.
Weitere Informationen und ein Codebeispiel finden Sie unter Senden einer HTTP POST-Antwort.
Bereinigen der HTTP-Server-API
Die Bereinigungsvorgänge für die HTTP-Server-API umfassen Folgendes:
- Entfernen aller registrierten URLs.
- Schließen des Handles für die Anforderungswarteschlange.
- Beenden der von der HTTP-Server-API erstellten Ressourcen.
Die Anwendung ruft die HttpRemoveUrl-Funktion auf, um die Registrierung von URLs zu aufheben, die von der anfänglichen HttpAddUrl-Funktion registriert wurden. Die Anwendung ruft auch HttpTerminate für jeden Aufruf von HttpInitialize mit übereinstimmenden Flageinstellungen auf. Dieser Aufruf beendet alle Ressourcen, die durch den Aufruf von HttpInitialize erstellt wurden.
Weitere Informationen und ein Codebeispiel finden Sie unter Bereinigen der HTTP-Server-API.