Mit HTTP-Nachrichtenflüssen arbeiten

Die Informationen in diesem Abschnitt unterstützen Sie bei der Verwendung von HTTP-Nachrichtenflüssen für die Interaktion mit Web-Services. Der folgende Abschnitt (Web-Service-Szenarios) erleichtert möglicherweise das Verständnis.

HTTPS
Hilfe bei der Verwendung von HTTPS finden Sie unter Implementierung der SSL-Authentifizierung.
Festlegen des HTTP-Statuscodes für eine Antwort
Der Standardwert für den HTTP-Statuscode lautet 200, was Erfolg bedeutet. Wenn ein anderer Statuscode zurückgegeben werden soll, führen Sie einen der folgenden Schritte aus:
  • Legen Sie den gewünschten Statuscode im Feld 'Destination.HTTP.ReplyStatusCode' im Eintrag 'LocalEnvironment' (Korrelationsname 'OutputLocalEnvironment') fest. Dadurch wird ein im 'HTTPResponseHeader' festgelegter Statuscode überschrieben, wie nachfolgend erläutert.
  • Wenn sich im Fluss ein HTTPAnforderungsknoten vor einem HTTPAntwotknoten befindet, dann wurde in der logischen Baumstruktur zuvor ein HTTPResponseHeader erstellt, der die HTTP-Header in der Antwort von einem anderen Webservice darstellt. Wenn die Eigenschaft HTTP-Standard-Header auf Basis der Antwort generieren des HTTPAntwortknotens ausgewählt ist, werden der Einfachheit halber die Werte aus diesem Header als Standardwerte beim Erstellen der Antwortnachricht verwendet, so dass Sie Ihren gewünschten Statuscode im Feld 'X-Original-HTTP-Status-Code' im HTTPResponseHeader angeben können. Sie können dieses Feld auch in einem HTTPReplyHeader festlegen, es wird jedoch empfohlen, stattdessen den Eintrag 'LocalEnvironment' wie oben beschrieben zu verwenden.
LocalEnvironment.Destination.HTTP.RequestIdentifier verwenden
Wenn der HTTPEmpfangsknoten eine Eingabeanforderungsnachricht empfängt, setzt er das LocalEnvironment-Feld 'Destination.HTTP.RequestIdentifier' auf einen eindeutigen Wert, der den Web-Service-Client, von dem die Anforderung gesendet wurde, identifiziert. Sie können auf diesen Wert verweisen und ihn bei Bedarf in einem anderen Verzeichnis speichern.

Wenn Sie beispielsweise ein Nachrichtenflusspaar entwerfen, das mit einer bestehenden WebSphere MQ-Anwendung interagiert (wie in Broker ruft bestehenden Web-Service auf beschrieben), können Sie diesen Wert im Anforderungsnachrichtenfluss speichern und ihn im Antwortnachrichtenfluss wiederherstellen, um sicherzustellen, dass die Antwort an den richtigen Client gesendet wird. In diesem Fall dürfen Sie die Daten nicht ändern und müssen die Daten als BLOB erhalten.

Der HTTPAntwortknoten extrahiert diesen Wert aus LocalEnvironment und erstellt die Antwort, so dass sie an den bestimmten Client gesendet wird.

Wenn Sie einen Nachrichtenfluss entwerfen, der sowohl einen HTTPEmpfangs- als auch HTTPAntwortknoten enthält, wird der Wert in LocalEnvironment vom HTTPEmpfangsknoten festgelegt, vom HTTPAntwortknoten jedoch nicht verwendet. Falls Ihr Nachrichtenfluss beide Knoten und einen Rechenknoten im selben Datenfluss enthält, müssen Sie deshalb die Baumstruktur 'LocalEnvironment' nicht einfügen, wenn Sie angeben, welche Komponenten der Nachrichtenbaumstruktur vom Rechenknoten aus der Eingabe- in die Ausgabenachricht kopiert werden (Eigenschaft Rechenmodus).

URL des HTTPAnforderungsknoten URL dynamisch festlegen
Sie können die Eigenschaft Default Web service URL (URL für Standard-Web-Service) im HTTPAnforderungsknoten angeben, um die Ziel-URL für eine Web-Service-Anforderung festzulegen. Sie können vor dem HTTPAnforderungsknoten im Nachrichtenfluss einen Rechenknoten konfigurieren, um den in der Eigenschaft angegebenen Wert zu überschreiben. Schreiben Sie einen ESQL-Code, der eine URL-Zeichenfolge in 'LocalEnvironment.Destination.HTTP.RequestURL' speichert. Diese wird vom HTTPAnforderungsknoten abgerufen und anstelle des Wertes für die Knoteneigenschaft verwendet.

Sie können den Anforderungs-URL zwar auch im Spezialheader 'X-Original-HTTP-URL' im Abschnitt 'HTTPRequestHeader' der Anforderungsnachricht in einem Rechenknoten festlegen (wodurch alle anderen Einstellungen überschrieben werden). Es wird jedoch empfohlen, zu diesem Zweck den Inhalt von LocalEnvironment zu verwenden.

Eigenschaft HTTP-Standard-Header auf Basis der Antwort generieren für den HTTPAntwortknoten festlegen
Wenn Sie das Kontrollkästchen HTTP-Standard-Header auf Basis der Antwort generieren im Eigenschaftendialog des HTTPAntwortknotens aktivieren, fügt der Knoten eine Mindestanzahl von Headern in die Antwort, die an den Web-Service-Client gesendet wird, ein.
Wenn Sie Header explizit festlegen möchten, müssen Sie sie in einem HTTPReplyHeader erstellen. Beispiel: Ein Rechenknoten, der eine Nachricht in der XMLNS-Domäne weitergibt und den Inhaltstyp ändern möchte, könnte dies wie folgt durchführen:
CALL CopyMessageHeaders();
SET OutputRoot.HTTPReplyHeader."Inhaltstyp" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;

Setzen Sie im Fall des Inhaltstyps diesen Header nicht auf die Eigenschaft 'ContentType', wenn Sie nicht in der MIME-Domäne arbeiten. Die Eigenschaft 'ContentType' dient speziell zum Einrichten des Inhaltstypwertes in MIME.

Die ganze Reihe der in dieser Anforderung verwendeten HTTP-Header wird erstellt, indem die Header mit folgendem Algorithmus ausgewählt werden:
  1. Wählen Sie einen beliebigen Header in einem HTTPReplyHeader aus.
  2. Wenn bislang noch kein Content-Type-Header definiert wurde, erstellen Sie ihn, indem Sie einen beliebigen Wert in der Eigenschaft 'ContentType' auswählen.
  3. Wählen Sie einen beliebigen Header in einem HTTPResponseHeader (ein HTTPResponseHeader wird bei der Rücklieferung von einem HTTPAnforderungsknoten weitergegeben).
  4. Wenn bislang noch kein Content-Type-Header definiert wurde, erstellen Sie einen mit dem Standardwert text/xml; charset=utf-8.
  5. Erstellen oder überschreiben Sie den Content-Length-Header.
Achtung: Der HTTPAntwortknoten schreibt den Header 'Content-Length' (Inhaltslänge) immer neu, auch wenn das Kontrollkästchen HTTP-Standard-Header auf Basis von Eingabe oder Antwort generieren inaktiviert wurde. Dadurch wird die Richtigkeit des Inhalts sichergestellt.

Wenn in der vom HTTPAntwortknoten empfangenen Nachricht ein Abschnitt 'HTTPReplyHeader' enthalten war und eine Verbindung mit dem Ausgabeterminal des HTTPAntwortknotens besteht, wird der Abschnitt 'HTTPReplyHeader' mit allen geänderten oder hinzugefügten Werten aktualisiert.

Eigenschaft HTTP-Standard-Header auf Basis der Eingabe generieren für den HTTPAnforderungsknoten festlegen
Wenn Sie das Kontrollkästchen HTTP-Standard-Header auf Basis der Eingabe generieren im Eigenschaftendialog des HTTPAnforderungsknotens aktivieren, fügt der Knoten eine Mindestanzahl von Headern in die Anforderung, die an den Server gesendet wird, ein.
Wenn Sie Header explizit festlegen möchten, müssen Sie sie in einem HTTPRequestHeader erstellen. Beispiel: Ein Rechenknoten, der eine Nachricht in der XMLNS-Domäne weitergibt und den Inhaltstyp ändern möchte, könnte dies wie folgt durchführen:
CALL CopyMessageHeaders();
SET OutputRoot.HTTPRequestHeader."Inhaltstyp" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;
Setzen Sie im Fall des Inhaltstyps diesen Header nicht auf die Eigenschaft 'ContentType', wenn Sie nicht in der MIME-Domäne arbeiten. Die Eigenschaft 'ContentType' dient speziell zum Einrichten des Inhaltstypwertes in MIME.
Die ganze Reihe der in dieser Anforderung verwendeten HTTP-Header wird erstellt, indem die Header mit folgendem Algorithmus ausgewählt werden:
  1. Richten Sie den Header 'Host' entweder auf Basis der Anforderungs-URL oder des Abschnitts 'HTTPRequestHeader' der eingehenden Nachricht ein.
  2. Wählen Sie einen beliebigen Header in einem HTTPRequestHeader aus.
  3. Wenn bislang noch kein Content-Type-Header definiert wurde, erstellen Sie ihn, indem Sie einen beliebigen Wert in der Eigenschaft 'ContentType' auswählen.
  4. Wählen Sie einen Header in einem HTTPInputHeader aus (ein HTTPInputHeader wird automatisch von einem HTTPEmpfangsknoten erstellt).
  5. Wenn bislang noch kein Content-Type-Header definiert wurde, erstellen Sie einen mit dem Standardwert text/xml; charset=utf-8.
  6. Wenn bislang noch kein SOAPAction-Header definiert wurde, erstellen Sie einen mit dem Standardwert ''.
  7. Erstellen oder überschreiben Sie den Content-Length-Header.
Achtung: Der HTTPAnforderungsknoten schreibt den Header 'Content-Length' (Inhaltslänge) immer neu, auch wenn das Kontrollkästchen HTTP-Standard-Header auf Basis von Eingabe oder Anforderung generieren inaktiviert wurde. Dadurch wird die Richtigkeit des Inhalts sichergestellt.

Wenn die empfangene Nachricht den Abschnitt 'HTTPRequestHeader' enthält, wird der Abschnitt 'HTTPRequestHeader' mit allen geänderten oder hinzugefügten Werten aktualisiert.

Beginn der ÄnderungTrace für HTTP-Empfangsprogramm bei Problemen mit HTTP erfassenEnde der Änderung
Beginn der ÄnderungWenn Sie Probleme mit HTTP haben, können Sie für das HTTP-Empfangsprogramm einen Trace durchführen:
  1. Starten Sie den Trace mit dem Befehl mqsichangetrace.
  2. Zeigen Sie das Traceprotokoll für das HTTP-Empfangsprogramm mit Hilfe des Befehls mqsireadlog mit dem Qualifikationsmerkmal für das HTTP-Empfangsprogramm für den Parameter -b an.
Ende der Änderung
Zugehörige Konzepte
WebSphere MQ Web Services Transport
WSDL generieren
Zugehörige Tasks
Nachrichtenflüsse erstellen
Implementieren
Ergebnisse der Einsetzung überprüfen
Zugehörige Verweise
HTTPEmpfangsknoten (HTTPInput)
HTTPAntwortknoten (HTTPReply)
HTTPAnforderungsknoten (HTTPRequest)
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac20450_