HTTP-Empfangsadapter
Der Empfangsspeicherort für den HTTP-Empfangsadapter ist eine eindeutige URL, die über die BizTalk Server-Verwaltungskonsole konfiguriert wird.
Sie können den HTTP-Empfangsadapter entweder für die asynchrone oder synchrone Übermittlung vom Client verwenden. Asynchrone Übermittlungen sind unidirektionale Übermittlungen, während synchrone Übermittlungen bidirektionale oder Anforderung-Antwort-Übermittlungen sind.
Sie können die IIS-Sicherheit für die Authentifizierung und Autorisierung eingehender Anforderungen verwenden.
HTTP GET- und HTTP POST-Anforderungen
Der HTTP-Empfangsadapter kann Nachrichten auf zwei verschiedene Arten empfangen – über eine HTTP POST- oder eine HTTP GET-Anforderung.
Wenn ein HTTP-Empfangsadapter Nachrichten für eine HTTP POST-Anforderung erhält, tritt die folgende Ereignissequenz auf:
Die in BizTalk Server konfigurierte URL empfängt eine neue Nachricht im Empfangsspeicherort.
Der Empfangsadapter erstellt ein BizTalk-Nachrichtenobjekt, damit die Nachricht an den Server übermittelt werden kann.
Der Empfangsadapter erstellt das BizTalk-Nachrichtenobjekt mit nur einem Teil – dem Nachrichtentextteil.
Nachdem die Nachricht gelesen und erfolgreich an den Server übermittelt wurde, sendet der HTTP-Empfangsadapter den HTTP-Code „202“ an den Client, der angibt, dass die Anforderung akzeptiert wurde.
Optional kann der HTTP-Empfangsadapter ein Nachrichtenkorrelationstoken für die HTTP-Antwort senden. Dieses Korrelationstoken stellt die Nachricht innerhalb von BizTalk Server dar. Wenn sich der HTTP-Empfangsspeicherort in einem Anforderung-Antwort-Port befindet, gibt der Adapter den Erfolgscode „200“ zusammen mit der Antwortnachricht zurück.
Wenn ein HTTP-Empfangsadapter Nachrichten von einer HTTP GET-Anforderung verarbeitet, dann erstellt der Empfangsadapter ein BizTalk-Nachrichtenobjekt und stellt die decodierte Abfragezeichenfolge der HTTP GET-Anforderung in den BizTalk-Nachrichtentextteil. Der HTTP-Adapter wählt die Abfragezeichenfolge mithilfe des folgenden Algorithmus aus, die in den BizTalk-Nachrichtentextteil gestellt wurde:
Wenn der HTTP-Empfangsadapter eine HTTP GET-Anforderung empfängt, teilt er die eingehende URI-Zeichenfolge mithilfe eines Fragezeichens (?) als Trennzeichen in zwei Teile auf.
Der erste Teil der URI-Zeichenfolge, der Teil vor dem Fragezeichentrennzeichen, wird in die InboundTransportLocation-Eigenschaft im Nachrichtenkontext kopiert. Die InboundTransportLocation-Eigenschaft identifiziert eindeutig den Speicherort, an dem BizTalk Server die Nachricht empfangen hat. Die Engine verwendet diese Eigenschaft zum Ermitteln, welcher Empfangsspeicherort für die Nachricht ausgeführt werden soll.
Der HTTP-Adapter nimmt den Rest der URI-Zeichenfolge, d. h. den Teil hinter dem Trennzeichen (Fragezeichen), und decodiert und kopiert diesen in den BizTalk-Nachrichtentextteil.
Wenn ein leerer HTTP GET- oder HTTP POST-Vorgang vom HTTP-Empfangsadapter empfangen wird, erfolgt die Ablehnung des Vorgangs.
Verarbeiten einer GET-Anforderung durch den HTTP-Empfangsadapter
Nachfolgend finden Sie Beispiele zum Verarbeiten von Nachrichten durch den HTTP-Empfangsadapter, die von HTTP GET-Anforderungen empfangen wurden. Diese Beispiele nehmen an, dass der HTTP-Empfangsadapter mit den folgenden beiden Empfangsspeicherorten konfiguriert ist:
/vroot/BTSHTTPReceive.dll
/vroot/BTSHTTPReceive.dll?LocationID=1
Folgende HTTP GET-Anforderung ist für den Client angegeben:
http://servername/vroot/BTSHTTPReceive.dll?LocationID=1
Folgende Aktion wird vom HTTP-Empfangsadapter ausgeführt:
Legen Sie die Eigenschaft InboundTransportLocation für den Nachrichtenkontext auf /vroot/BTSHTTPReceive.dll und den BizTalk Message-Objekttextteil auf LocationID=1 fest.
Folgende HTTP GET-Anforderung ist für den Client angegeben:
http://servername/vroot/BTSHTTPReceive.dll?LocationID=1&MyParam=My%20Value
Folgende Aktion wird vom HTTP-Empfangsadapter ausgeführt:
Legen Sie die InboundTransportLocation-Eigenschaft auf /vroot/BTSHTTPReceive.dll und den BizTalk Message-Objekttextteil auf LocationID=1&MyParam=My Value fest.
Folgende HTTP GET-Anforderung ist für den Client angegeben:
http://servername/vroot/BTSHTTPReceive.dll
Die vom HTTP-Empfangsadapter ausgeführte Aktion lautet wie folgt:
Lehnen Sie die Anforderung aufgrund einer falschen Formatierung der HTTP GET-Anforderung ab.
Batchverarbeitungsunterstützung für den HTTP-Empfangsadapter
Der HTTP-Empfangsadapter übermittelt Nachrichten in einem Batch an den Server. Die zum Übermitteln von Nachrichten an den Server verwendete Batchgröße kann für den HTTP-Adapterempfangshandler konfiguriert werden.
Unterstützung des HTTP-Empfangsadapters zum Anhalten fehlerhafter Anforderungen
Der BizTalk Server HTTP-Empfangsadapters verfügt über die Konfigurationseinstellung Suspend Failed Requests( Anhalten fehlgeschlagener Anforderungen), um zu steuern, was mit einer HTTP-Anforderung geschieht, wenn die eingehende Verarbeitung aufgrund eines Empfangspipelinefehlers, eines Zuordnungsfehlers oder eines Routingfehlers fehlschlägt. Die Einstellung besitzt zwei mögliche Werte:
Falsch. Dies ist die Standardeinstellung. Der HTTP-Empfangsadapter verwirft Nachrichten, bei denen bei der Eingangsverarbeitung ein Fehler in der Empfangspipeline, ein Zuordnungsfehler oder ein Routingfehler aufgetreten ist. Zusätzlich wird dem Client der Fehlerstatuscode 401 oder 500 gesendet.
Richtig. Der HTTP-Empfangsadapter hält Nachrichten an, bei denen bei der Eingangsverarbeitung ein Fehler in der Empfangspipeline, ein Zuordnungsfehler oder ein Routingfehler aufgetreten ist. Für unidirektionale Empfangsports wird ein Akzeptierter status Code 202 an den Client gesendet. Für bidirektionale Empfangsports wird ein Fehler status Code 500 an den Client gesendet.
Unterstützung der Teilcodierung für den HTTP-Empfangsadapter
Der HTTP-Empfangsadapter akzeptiert HTTP-Anforderungen mit teilweise codierten Textteilnachrichten. Der Empfangsadapter verwendet die Teilcodierung zum Senden von Antwortnachrichten, wenn die Nachrichtenteilgröße 4 KB übersteigt. Die blockierte Codierung kann durch Festlegen des DWORD-Registrierungseintrags deaktiviert werden, der unter Konfigurations- und Optimierungsparameter für HTTP-Adapter beschrieben wird.
Clientzertifikate für den HTTP-Empfangsadapter
Sobald eine sichere Verbindung mit einem Clientzertifikat für den HTTP-Empfangsspeicherort verwendet wird, erhält der der HTTP-Empfangsadapter den Fingerabdruck des Clientzertifikats von den Microsoft Internetinformationsdiensten (IIS) und fügt diesen zum Nachrichtenkontext aller Nachrichten hinzu, die über HTTPS an diesem Speicherort empfangen wurden. Der HTTP-Empfangsadapter legt die folgenden Systemeigenschaften fest:
SourcePartyEvidenceQualifier = "Certificate"
SourcePartyEvidence = <certificate thumbprint>
Vom HTTP-Empfangsadapter zurückgegebene Statuscodes
In der folgenden Liste sind Statuscodes enthalten, die vom HTTP-Empfangsadapter zurückgegeben wurden.
200 OK. Der Adapter hat die Anforderungsnachricht erfolgreich verarbeitet und eine Antwort generiert. Der Adapter gibt diesen Statuscode mit der HTTP-Antwort vom HTTP-Anforderung-Antwort-Port zurück.
202 Nachricht akzeptiert. Der Adapter hat die Nachricht erfolgreich an den Server übermittelt oder es wird eine unidirektionale Anforderung angehalten. Der Adapter gibt diesen Statuscode mit der HTTP-Antwort von einem unidirektionalen HTTP-Empfangsport zurück.
401 Zugriff verweigert. Die HTTP-Anforderung wird an einem Empfangsport mit erforderlicher Authentifizierung empfangen und bei der Sicherheitsüberprüfung für diese Nachricht ist ein Fehler aufgetreten. Die Partei wurde z. B. nicht aufgelöst oder die Nachricht wurde nicht entschlüsselt.
500 Interner Serverfehler. Ein allgemeiner Fehler bei der Verarbeitung der HTTP-Anforderung. Die Nachricht wird von BizTalk Server nicht angehalten, es sei denn, die Konfigurationseinstellung Fehlgeschlagene Anforderungen anhalten ist für einen bidirektionalen Empfangsport auf True festgelegt.