I have GAE + endpoints working between an Android client and app engine backend.
I'm now at the point where I want to store a small image as a Blob datatype using JDO. I have the following two methods in my model's backend:
public byte[] getPicture() {
if (picture == null) {
return null;
}
return picture.getBytes();
}
public void setPicture(byte[] bytes) {
this.picture = new Blob(bytes);
}
However, when I generate my endpoint for my Android client, the setPicture(byte[] bytes) method signature gets transformed to setPicture(String bytes).
Is that a bug or intended? If intended, how am I supposed to transfer my image to a String?
Thanks!
Alright, I figured it out. Turns out it's expecting the byte array in base64 format, which explains why the byte[] signature gets changed to a String.
So in Android to go from byte[] to base64 string I used, where mPicture is my byte array:
Base64.encodeToString(mPicture, Base64.DEFAULT);
And to receive a String and transform back to byte[], where picture is the base64 string received from endpoint:
Base64.decode(picture, Base64.DEFAULT);
Hope this helps!