HTTP-Serveraufgaben

In der Regel werden HTTP-Serveraufgaben in einer bestimmten Reihenfolge ausgeführt. d. h. eine Aufgabe muss abgeschlossen werden, und die Ausgabe, die vor beginn des nächsten Vorgangs abgerufen wird.

Eine Aufgabenseite wird erstellt, um Beispielcode zu bestimmten Aufgaben darzustellen, die eine HTTP Server-Anwendung ausführt. Eine Aufgabenseite verweist auf die 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 werden die HTTP-Serveraufgaben identifiziert:

Initialisieren des HTTP-Diensts

Der HTTP-Dienst wird mithilfe der HttpInitialize-Funktion initialisiert, und das Handle für die Anforderungswarteschlange wird mithilfe 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 Aufhören

Damit die HTTP-Server-API auf eingehende Anforderungen lauscht, werden bestimmte URLs mit der API registriert, indem die HttpAddUrl--Funktion aufgerufen wird. Eingehende Anforderungen, die diesen URLs entsprechen, werden an die in diesem Anruf angegebene Anforderungswarteschlange weitergeleitet.

Weitere Informationen und ein Codebeispiel finden Sie unter Registrieren der URLs zum Überwachen von.

Rufen Sie die Routine auf, um eine Anfrage zu erhalten

Die DoReceiveRequest-Funktion weist 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 zugewiesen 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.

Behandeln der HTTP-Anforderung

Die Beispielanwendung zeigt, wie die Verben HTTP GET und POST-Anforderung behandelt werden. Die Anwendung sendet einen 503 (NOT_IMPLEMENTED) Fehler, wenn Verben in der Anforderung vorhanden sind, die die Anwendung nicht behandelt.

Beachten Sie, dass die URL, die bei der Verarbeitung von Anforderungen verwendet werden soll, die verarbeitete URL ist, die im CookedUrl- Mitglied der HTTP_REQUEST_V1-Struktur enthalten ist. Nicht die unverarbeitete URL im pRawUrl Mitglied, das ausschließlich zur Nachverfolgung und statistischen Zwecke dient.

Weitere Informationen und ein Codebeispiel finden Sie unter Handle the HTTP Request.

Senden der HTTP-Antwort

Die Antwortstruktur wird mit dem Statuscode und einem Grundausdruck im INITIALIZE_HTTP_RESPONSE-Makro zugewiesen und initialisiert. Ein bekannter HTTP-Header wird der Antwortstruktur im ADD_KNOWN_HEADER-Makro hinzugefügt, und der Entitätstext wird der Antwort eines Datenblocks 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 empfangen, indem die funktion HttpReceiveRequestEntityBody aufgerufen wird. Die Anwendung sendet die Antwort und den Antwortentitätstext in separaten Aufrufen der HTTP-Server-API. Die Antwortheader werden mit der HttpSendHttpResponsegesendet. Der Entitätstext wird in einem Datenblock aus einem Dateihandle mit der funktion HttpSendResponseEntityBody gesendet.

Weitere Informationen und ein Codebeispiel finden Sie unter Senden einer HTTP POST-Antwort.

Bereinigen der HTTP-Server-API

Zu den Bereinigungsvorgängen für die HTTP-Server-API gehören:

  • Alle registrierten URLs werden entfernt.
  • Schließen des Handles an die Anforderungswarteschlange.
  • Beenden der von der HTTP-Server-API erstellten Ressourcen.

Die Anwendung ruft die HttpRemoveUrl--Funktion auf, um urLs zu deregistern, die von der ursprünglichen HttpAddUrl--Funktion registriert wurden. Die Anwendung ruft auch HttpTerminate- für jeden Aufruf HttpInitialize mit übereinstimmenden Flageinstellungen auf. Dieser Aufruf beendet alle Ressourcen, die durch den Aufruf von HttpInitializeerstellt wurden.

Weitere Informationen und ein Codebeispiel finden Sie unter Bereinigen der HTTP-Server-API.