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.

Empfohlene Methoden für REQUEST_TRANSPORT_PROPERTIES
- Die einzelnen Name/Wert-Paare müssen durch ein Semikolon (;) getrennt sein.
- Jeder Name muss durch ein Gleichheitszeichen (=) vom zugehörigen Wert getrennt sein.
name1=value1;name2=value2;name3=value3
- 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.
Header | Anforderung senden | Antwort abrufen |
---|---|---|
Transfer-Encoding |
|
Keine spezielle Verarbeitung |
Connection |
|
Keine spezielle Verarbeitung |
Expect |
|
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
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”);
}
}