axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jamie <>
Subject Re: calling a method with xsd__base64Binary
Date Wed, 11 May 2005 13:50:16 GMT
Hi Mark

Thanks so much for your help. That worked like a charm. I thought I was going bonkers there.


Hi Jamie,
I fixed a bug in SoapSerializer for xsd__base64Binary on 28/4 (after 1.5
was released). The bug was that null bytes in the binary data were not
handled correctly. So if you're using 1.5, please upgrade to a later
nightly level and let us know how you get on,
Mark Whitlock

----- Forwarded by Mark Whitlock/UK/IBM on 11/05/2005 09:46 -----
             a>                                                         To 
             10/05/2005 17:45                                           cc 
             Please respond to         calling a method with               
              "Apache AXIS C           xsd__base64Binary                   
                User List"                                                 


I am using the Axis C++ API to send compressed emails from a C++ client
to a server implemented in Java.

In my client code (see below), I have an exposed function called
storeMessage, that has a xsd__base64Binary parameter. When I send the
email without compression (i.e. plaintext), the data is passed
correctly. However, when I compress the data using zlib, I get a wierd
message "xarchiveInternalReturn e" (each letter seperated by null
characters) coming through as a parameter. See source below.

                        CA2GZIP gzip((char*)pszBuffer,ulFileSize); //
wrapper library for zlib services.. pszBuffer contains plaintext email
                        char endpoint[256];
                        sprintf (endpoint,
"" <>);
                        TestService webservice(endpoint);
                        xsd__base64Binary bb;
                        bb.__ptr = (xsd__unsignedByte*)gzip.pgzip; //
contains compressed data
                        bb.__size = gzip.Length;
                        FILE *aout=fopen("c:\\test.gz","wb"); // just
for testing to see that the message is valid for debugging purposes
                        size_t count1=fwrite(bb.__ptr,1,bb.__size,aout);

Am I missing something here? I assume the AXIS will take care of the
base64 conversion before sending the message?

I have also noticed that Axis C++ generates a nasty access fault when an
exception is thrown from the client. It tries to delete a stray pointer.
Has anyone experienced problems with exceptions?

Thanks in advance for your help.


View raw message