App engine + endpoint generating a string instead of byte array as method argument

旧城冷巷雨未停 提交于 2019-12-07 18:25:56

问题


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!


回答1:


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!



来源:https://stackoverflow.com/questions/25587401/app-engine-endpoint-generating-a-string-instead-of-byte-array-as-method-argume

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!