Sonderzeichenkodierung bei SOAP-Request mit Java Axis

pede20

Grünschnabel
Hallo Zusammen,

ich bin derzeit dabeí mich in die Webservice-Entwicklung mit Java einzuarbeiten. Das klappt auch soweit ganz gut. Nur mit der Kodierung von Sonderzeichen habe ich noch diverse Probleme:

Sende ich mit meinem über WSDL2Java generierten Client in den Übergabeparameter Strings mit Sonderzeichen (ü, ß, ...) an den Webservice, dann kommen diese dort nicht korrekt an. Ich gehe davon aus, dass ich vor dem Absenden des Requests dem Stub noch eine Codierung angeben muss, konnte dafür aber bisher aber keine Lösung finden. Hat irgend jemand vielleicht schon Erfahrungen damit gesammelt?

Wäre für jeden Tipp dankbar!

Gruß padde!
 
Zuletzt bearbeitet:
Nochmal ne kleine Erweiterung zum Verständnis:

Ein SOAP-Request sieht in seinem Aufbau ja grundsätzlich wie folgt aus:

HTTP/1.1 200 OK
Date: Thu, 05 Sep 2002 08:01:13 GMT
Server: Apache/1.3.22 (Unix) Enhydra-Director
SOAPServer: SOAP::Lite/Perl/0.52
Content-Length: 546
Connection: close
Content-Type: text/xml; charset=utf-8

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<namesp1:BabelFishResponse xmlns:namesp1="urn:xmethodsBabelFish">
<return xsi:type="xsd:string">hello world, good day</return>
</namesp1:BabelFishResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Nun werden die Sonderzeichen wohl durch die "processing Instruction"
<?xml version="1.0" encoding="UTF-8"?> falsch dargestellt. Würde das encodung auf ISO-8859-1 gesetzt werden, dann würden die Sonderzeichen vermutlich korrekt übergeben werden.

Somit habe ich mein Problem eigentlich schon selbst erkannt. Leider habe ich im Client-Code, der durch WSDL2Java erstellt wurde noch keine Möglichkeit gefunden auf genau diese Zeile zuzugreifen. Gibt es da irgendwelche Methoden wie setEncoding() oder setProperty() mit denen das möglich ist? Muss es doch eigentlich, oder?

Gruß Padde
 
Zurück