将文档保存在 android API

baasbox save document on android API

我有以下讨厌的堆栈跟踪

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
Caused by: class com.baasbox.android.BaasClientException :{"result":"error","message":"The body payload cannot be empty. Hint: put in the request header Content-Type: application/json","resource":"/document/Images","method":"POST","request_header":{"X-BAASBOX-APPCODE":["1234567890"],"Connection":["Keep-Alive"],"Content-Length":["316039"],"X-BB-SESSION":["187be9f8-dc77-436d-89de-65dd3cf0e2ba"],"Content-Type":["application/json;charset=UTF-8"],"Accept-Encoding":["gzip"],"User-Agent":["BaasBox AndroidSDK/0.9.2"],"Host":["192.168.192.59:9000"]},"API_version":"0.9.5"}
at com.baasbox.android.NetworkTask.onClientError(NetworkTask.java:98)
at com.baasbox.android.NetworkTask.parseResponse(NetworkTask.java:63)
at com.baasbox.android.NetworkTask.asyncCall(NetworkTask.java:151)
at com.baasbox.android.impl.Task.execute(Task.java:189)
at com.baasbox.android.impl.Dispatcher$Worker.run(Dispatcher.java:170)

当我尝试将图片保存到之前在我的本地 baasbox 安装上创建的 Collection 中时会发生这种情况,这是导致问题的代码,不确定实际问题是什么... 如果您能提供任何帮助,我们将不胜感激...

Bitmap bitmap = MediaStore.Images.Media.getBitmap( this.getContentResolver(), selectedImage);
ImageView imageView = (ImageView)findViewById(R.id.shareImageView);
imageView.setImageBitmap(bitmap);

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

BaasDocument doc = new BaasDocument("Images");
doc.put("title","Image");
doc.put("body", byteArray);
doc.save(new BaasHandler<BaasDocument>() {
    @Override
    public void handle(BaasResult<BaasDocument> res) {
        if(res.isSuccess()) {
            Log.d("LOG","Saved: "+res.value());
        } else {
            Log.d("LOG","No Saved: "+res.value());
        }
    }
});

这段代码解决了这个问题,而不是将图像视为文档,我应该从一开始就使用文件,欢迎任何关于何时使用文件以及何时使用文档的评论。

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

JsonObject attachedData = new JsonObject();
attachedData.put("username", BaasUser.current().getName());

BaasFile file = new BaasFile(attachedData);

//BaasACL acl = new BaasACL().grantUsers(Grant.READ,"all");

//file.upload(acl, byteArray,new BaasHandler<BaasFile> () {
file.upload(byteArray,new BaasHandler<BaasFile> () {
    @Override
    public void handle(BaasResult<BaasFile> res) {
        if( res.isSuccess() ) {
            Log.d("LOG","File uploaded with permissions");
        } else {
            Log.e("LOG","Deal with error",res.error());
        }
    }
});