Hi Vince,
I think that what's happening here is that the SOAP toolkit is performing the base64 encoding for you, so if you base64 encode the value as well, you're double-encoding and that leads to the error.
For example, in the Java client library, the type of the
Image.data field is simply
byte[], so when creating an
Image object I can simply set that field to the raw byte array. However, when the underlying SOAP toolkit (e.g., Apache Axis) builds the message, it base64 encodes those bytes.
Cheers,
Josh, AdWords API Team