Internally (like when your code says: java.lang.String text = "abcd"; ) Java uses Unicode to encode the value of "abcd".

When you are reading or writing this String from/to a Stream you need to specify what encoding the incoming or outgoing data should have.
Consider this example, it uses UTF-8 as encoding for both: outgoing SOAP request message and incoming response.

In your case you would use "ISO8859_1" instead of "UTF-8".
Of course, this example is not using Axis, but it should work just fine for debug purposes and calling any sync webservice (just replace the
highlighted values).

Socket socket = new Socket();
InetSocketAddress isa = new InetSocketAddress(
HOST_NAME, PORT);
socket.setSoTimeout(
TIME_OUT);
socket.connect(isa,
TIME_OUT);
BufferedWriter w = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
w.write("POST " +
PATH + " HTTP/1.0\r\n");
w.write("Content-Length: " + request.getBytes("UTF8").length + "\r\n");
w.write("Content-Type: text/xml\r\n");
w.write("SOAPAction: " +
SOAP_ACTION + "\r\n");
w.write("\r\n");
w.write(request);
w.flush();

BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF8"));

String response = "";
String resp;
            while ((resp = r.readLine()) != null)
            {
                response = response + resp.trim();
            }

I suspect there is an easy way to do it Axis2 as well. Perhaps by providing some parameter to a sender method or maybe it even recognizes the encoding specified on the payload message itself.

hth,
AL


In a message dated 10/31/2006 5:19:25 PM Eastern Standard Time, [EMAIL PROTECTED] writes:
Guys, I'm developing a JAVA GUI that runs on Windows XP where the user can enter account data that will be stored on a linux+postgre server.

The data is sent from the GUI to the postgre server using soap. I'm using axis2 on the client side. (the server-side uses Perl SOAP)

The problem is the server is configured to use ISO-8859-1, while my Java application is sending the data using UTF-8. All the strings containing non-ascii characters are being stored incorrectly on the server. The server is not converting from utf-8 to iso-8859-i before storing the data.

Since the people on the server-side say "we cannot change nothing", and they suggested "you have to send this data in iso-8859-1", I'm obligated to send my SOAP post's using ISO-8859-1 strings instead of UTF-8.

I have no idea of how can I do this. Can someone give some hints on this?

Thank you very much,

bruno.

Reply via email to