Howto setup-JAX-WS-client ISO-8859-1 anstatt UTF-8?
Möchte ich bei der Konfiguration meines JAX-WS-client zum senden von Nachrichten in ISO-8859-1. Derzeit UTF-8 verwendet wird.
Hier 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 wird ignoriert, und tcpmon zeigt, dass das folgende von dem server empfangen:
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, wird die Einstellung überschrieben und wird UTF-8 verwendet, sowohl im HTTP-header und in der XML-Nachricht. Der service ist definiert durch die WSDL, die in UTF-8 codiert.
Q: Sollte ich definieren Sie die service-WSDL-codiert in ISO-8899-1 und dann neu erstellen, den client? Oder ist es so, dass ich einfach nicht die Einstellung der HTTP-Header korrekt?
- Welche JDK-Verkäufer/ - version hat der client? Ich kann mich an einen bug in einem ehemaligen JAX-WS-Implementierung (1.6.0.1 oder so)...
- Der AUFTRAGGEBER ist die Ausführung von Java 1.6.0_29, die JAX-WS-Bibliothek verwendet, ist " Weblogic "Oracle JAX-WS 2.1.5". Ich habe gerade getestet JAXWS, dass kommt mit JDK 6, der "JAX-WS RI 2.1.6", und das Ergebnis ist das gleiche
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung von hf:
Und registrieren Sie den handler:
Die Antwort von jaypi scheint Recht. Aber ich brauchte, um einige Standard-Implementierungen. Es war auch einfach inline:
UPDATE: ich vermute, Sie haben um die handlerChain ausdrücklich. ändern Sie das Ergebnis von getHandlerChain nichts.