It's a little hard to tell without seeing the fault, but somewhere there
should be an accessible declaration of the type xsd:base64, for example
as a trivial restriction of xsd:base64Binary to prevent failure based on
no type definition being available. You may not be allowed to define
new types in the XML Schema namespace, so this may be a trickier problem
than it looks.
Jeff
Daniel Morrow wrote:
Dear list,
I'm new to Axis, but not to web-services development. I've developed
web services clients for the Mac, which communicate to .NET based
services. Now, I'm involved in ditching the .NET work, in favor of Axis.
Anyway, we have a few Mac clients, which send some data Base64
encoded. So, when the data gets serialized into the SOAP packet, the
parameter might look something like this:
<myTag xsi:type="xsd:base64">AAAA</myTag>
For some reason, Mac OS X, 10.3, claims the type is "base64", when it
really should be "base64Binary". Why it does this, I don't know. (For
those who are curious, 10.4, or "Tiger", does flag the parameter as a
base64Binary)
What I'm trying to tell Axis, is that if you see a param flagged as a
"base64", then treat it as a "base64Binary".
My guess is that I can accomplish this by adding a "typeMapping" tag
in my "deploy.wsdd" file:
<typeMapping qname="xsd:base64"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
languageSpecificType="java:byte[]"
serializer="org.apache.axis.encoding.ser.Base64SerializerFactory"
deserializer="org.apache.axis.encoding.ser.Base64DeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
But this seems to have no effect, as I still get a SOAP-fault message
sent back.
If anyone has done something like this, I'd really like to know how,
as I'd like to continue to allow Mac OS X users to connect to my Web
Service.
Thanks for any help in this regard,
-Dan.
P.S. - I'm using Eclipse 3.1M6, with the latest Web Tools, which
includes Axis 1.1.