Ich möchte meinen JAX-WS-Client zum Senden von Nachrichten in ISO-8859-1 konfigurieren. Derzeit wird UTF-8 verwendet. HierHowto Setup JAX-WS-Client für die Verwendung von ISO-8859-1 anstelle von UTF-8?
ist, was der Kunde versucht zu tun:
Map<String, Object> reqContext = ((BindingProvider) service).getRequestContext();
Map httpHeaders = new HashMap();
httpHeaders.put("Content-type",Collections.singletonList("text/xml;charset=ISO-8859-1"));
reqContext.put(MessageContext.HTTP_REQUEST_HEADERS, httpHeaders);
Aber diese Einstellung ignoriert und tcpmon zeigt, dass die folgenden vom Server empfangen wird:
POST /service/helloWorld?WSDL HTTP/1.1
Content-type: text/xml;charset="utf-8"
Soapaction: "helloWorld"
Accept: text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
User-Agent: Oracle JAX-WS 2.1.5
Host: 1.1.1.1:8001
Connection: keep-alive
Content-Length: 4135
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelopexmlns:S="http://schemas.xmlsoap.org/soap/envelope/">...
So ist die Einstellung außer Kraft gesetzt wird und UTF-8 wird sowohl im HTTP-Header als auch in der XML-Nachricht verwendet. Der Dienst wird von der WSDL definiert, die in UTF-8 codiert ist.
F: Sollte ich den Dienst WSDL neu definieren, um in ISO-8899-1 kodiert zu werden, und den Client dann neu generieren? Oder stelle ich die HTTP-Header einfach nicht richtig ein?
Welcher JDK-Anbieter/welche Version wird vom Client verwendet? Ich erinnere mich an einen Fehler in einer früheren JAX-WS-Implementierung (1.6.0.1 oder so) ... – home
Der Client läuft mit Java 1.6.0_29, die verwendete JAX-WS-Bibliothek ist Weblogic "Oracle JAX-WS 2.1.5". Ich habe gerade die JAXWS getestet, die mit JDK 6 geliefert wird, die "JAX-WS RI 2.1.6", und die Ergebnisse sind die gleichen –