Empfohlene Methoden für Eigenschaften des Transportheaders

Sie können die Eigenschaften REQUEST_TRANSPORT_PROPERTIES und RESPONSE_TRANSPORT_PROPERTIES in einem JAX-RPC-Client-Stub (Java™ API for XML-based RPC), einer Call-Instanz oder einer RequestContext-Instanz des JAX-WS-BindingProviders (Java API for XML-Based Web services) setzen, um einem Web-Service-Client das Senden oder Abrufen der Transportheader zu ermöglichen.

Bewährtes Verfahren Bewährtes Verfahren: Wenden Sie diese empfohlenen Methoden an, um einem Web-Service-Client das Senden oder Empfangen von Transportheadern zu ermöglichen. bprac

Empfohlene Methoden für REQUEST_TRANSPORT_PROPERTIES

Einige Transportheader, wie z. B. der HTTP-Cookie-Header und der Cookie2-Header, enthalten mehrere eingebettete Werte. Bei Headern, die mehrere Werte enthalten, muss der Headerwert wie folgt geschrieben werden:
  • Die einzelnen Name/Wert-Paare müssen durch ein Semikolon (;) getrennt sein.
  • Jeder Name muss durch ein Gleichheitszeichen (=) vom zugehörigen Wert getrennt sein.
Das folgende Beispiel zeigt, wie die Headerwerte geschrieben sein müssen:
name1=value1;name2=value2;name3=value3
Die Werte, die in der Map des Benutzers enthalten sind, können geparst werden, bevor sie der abgehenden Anforderung hinzugefügt werden, wenn die abgehende Anforderung bereits eine Header-ID enthält, die der ID in der Map entspricht. Bei bestimmten Transportheadern, die mehrere integrierte Werte enthalten, werden die einzelnen Komponenten "Name=Wert" der Headerwerte in der Map überprüft. Die Komponenten sind durch ein Semikolon (;) getrennt. Beispiel: Name1=Wert1;Name2=Wert2. Die einzelnen Komponenten Name=Wert werden an den abgehenden Header angehängt, sofern keine der folgenden Bedingungen erfüllt ist:
  • Der Header der abgehenden Anforderung enthält einen Wert für Name.

    In diesem Fall wird die Angabe Name=Wert aus der Map ignoriert, um zu verhindern, dass ein Client Werte, die der Server oder die Web-Service-Engine bereits im Header der abgehenden Anforderung für Name gesetzt hat, überschreibt.

  • Der Headerwert des Benutzers enthält mehrere Werte für Name.

    Wenn der Headerwert des Benutzers mehrere Werte für Name enthält, wird das erste Vorkommen von Name verwendet. Die übrigen Vorkommen werden ignoriert. Falls der Headerwert des Benutzers beispielsweise die Angabe Name1=Wert1;Name2=Wert2;Name1=Wert3 und somit zwei Vorkommen von Name1 enthält, wird der erste Wert (Name1=Wert1) verwendet. Der andere Wert (Name1=Wert3) wird ignoriert.

Empfohlene Methoden für RESPONSE_TRANSPORT_PROPERTIES

Es werden nur die Mapschlüssel verwendet. Die Mapwerte werden ignoriert. Die Werte werden aus den Transportheadern abgerufen, die den Mapschlüsseln der eingehenden Antwortnachricht entsprechen, und in diese Map eingetragen. Eine leere Map führt dazu, dass alle Transportheader und die zugehörigen Werte aus der eingehenden Antwortnachricht abgerufen werden.

HTTP-Header mit spezieller Verarbeitung

Beim Senden und Empfangen von HTTP-Antworten und -Anforderungen unterliegen die folgenden HTTP-Header einer speziellen Behandlung.

Es gibt verschiedene Möglichkeiten, die Werte in diesen Headern zu setzen. Einige Headerwerte werden beispielsweise ausgehend von den Einstellungen in einem Implementierungsdeskriptor oder in einer Bindungsdatei gesetzt. In solchen Fällen überschreibt der mit REQUEST_TRANSPORT_PROPERTIES gesetzte Wert die Werte, die auf andere Weise festgelegt wurden.

Tabelle 1. Werte von HTTP-Anforderungen und HTTP-Antwortheadern . Werte, die für HTTP-Header beim Senden und Abrufen von HTTP-Antworten und -Anforderungen angegeben werden können.
Header Anforderung senden Antwort abrufen
Transfer-Encoding
  • Der Header "Transfer-Encoding" wird von HTTP 1.0 ignoriert.
  • Wenn Sie HTTP 1.1 verwenden, wird der Header "Transfer-Encoding" auf chunked gesetzt, sofern der Wert chunked lautet.
Keine spezielle Verarbeitung
Connection
  • Der Header "Connection" wird von HTTP 1.0 ignoriert.
  • Wenn Sie HTTP 1.1 verwenden, werden die folgenden Werte festgelegt:
    • Der Header "Connection" wird auf "close" gesetzt, sofern der Wert auf "close" gesetzt ist.
    • Der Header "Connection" wird auf "keep-alive" gesetzt, sofern der Wert auf "keep-alive" gesetzt ist.
    • Alle anderen Werteeinstellungen werden ignoriert.
Keine spezielle Verarbeitung
Expect
  • Der Header "Expect" wird von HTTP 1.0 ignoriert.
  • Wenn Sie HTTP 1.1 verwenden, werden die folgenden Werte festgelegt:
    • Der Header "Expect" wird auf "100-continue" gesetzt, sofern der Wert auf "100-continue" gesetzt ist.
    • Alle anderen Werteeinstellungen werden ignoriert.
Keine spezielle Verarbeitung
Host Ignoriert Keine spezielle Verarbeitung
Content-Type Ignoriert Keine spezielle Verarbeitung
SOAPAction Ignoriert Keine spezielle Verarbeitung
Content-Length Ignoriert Keine spezielle Verarbeitung
Cookie

Zeichenfolgekonstante: com.ibm.websphere.webservices.Constants.HTTP_HEADER_COOKIE

Der Wert wird im Header gesendet, wenn er ordnungsgemäß strukturiert ist. Lesen Sie hierzu die Informationen zum Format von Headerwerten und zu den Mapwerten. Keine spezielle Verarbeitung
Cookie2

Zeichenfolgekonstante: com.ibm.websphere.webservices.Constants.HTTP_HEADER_COOKIE2

Siehe Angaben zum Eintrag "Cookie" Keine spezielle Verarbeitung
Set-Cookie

Zeichenfolgekonstante: com.ibm.websphere.webservices.Constants.HTTP_HEADER_SET_COOKIE

Keine spezielle Verarbeitung Wenn die Eigenschaft MAINTAIN_SESSION auf true gesetzt ist, wird der gesamte Wert in SessionContext.CONTEXT_PROPERTY gespeichert und in nachfolgenden Anforderungen im Header "Cookie" gesendet. Lesen Sie hierzu auch die Informationen zum Eintrag "Cookie".
Set-Cookie2

Zeichenfolgekonstante: com.ibm.websphere.webservices.Constants.HTTP_HEADER_SET_COOKIE2

Keine spezielle Verarbeitung Wenn die Eigenschaft MAINTAIN_SESSION auf true gesetzt ist, wird der gesamte Wert in SessionContext.CONTEXT_PROPERTY gespeichert und in nachfolgenden Anforderungen im Header "Cookie" gesendet. Lesen Sie hierzu auch die Informationen zum Eintrag "Cookie".

Beispielclientcode

Das folgende Beispiel zeigt, wie ein Web-Service-Client codiert werden muss, um Werte für Transportheader zu senden und zu empfangen:
public class MyApplicationClass {
    // Instanz des Porttyps des Service injizieren.
    @WebServiceRef(EchoService.class)
    private EchoPortType port;

    // Diese Methode ruft die Web-Service-Operation auf und sendet und empfängt Transportheader.
    public void invokeService() {

        // Map konfigurieren, die die Anforderungsheader enthält.
        Map<String, Object>requestHeaders = new HashMap<String, Object>();
        requestHeaders.put(“Cookie”, “ClientAuthenticationToken=FFEEBBCC”);
        requestHeaders.put(“MyHeaderFlag”, new Boolean(true));

        // Map als Eigenschaft im RequestContext setzen.
        BindingProvider bp = (BindingProvider) port;
        bp.getRequestContext().put(com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES, requestHeaders);

        // Map zum Abrufen von Transportheadern aus der Antwortnachricht abrufen.
        Map<String, Object>responseHeaders = new HashMap<String, Object>();
        responseHeaders.put(“Set-Cookie”, null);
        responseHeaders.put(“MyHeaderFlag, null);

        // Web-Service-Operation aufrufen.
        String result = port.echoString(“Hello, world!”);

        // Header aus der Antwort abrufen.
        String cookieValue = responseHeaders.get(“Set-Cookie”);
        String headerFlag = responseHeaders.get(“MyHeaderFlag”);
    }
}

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_transportheaderproperty
Dateiname:rwbs_transportheaderproperty.html