J'ai la mauvaise pile tracebaasbox enregistrer le document sur l'API Android
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)
suivant Cela se produit lorsque je tente d'enregistrer une image dans une collection créée précédemment sur mon installation baasbox locale, est le code ici qui provoque le problème, pas sûr quelle est la véritable question ... toute aide que vous pouvez apporter sera très appréciée ...
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());
}
}
});
Je pense que ce que vous avez fait est correct. En général tout contenu qui est un «fichier» sur le système Android - comme Word, Excel, MP3, films, images, etc - vous devez utiliser BaasFile comme il est destiné à stocker des données binaires. Le document doit être utilisé lorsque vous traitez des données d'application réelles que vous avez l'intention de stocker dans la base de données. Dans de tels cas, vous vous intéressez à l'objet entier ainsi qu'aux attributs individuels de l'objet. Dans le cas ci-dessus, vous pouvez utiliser un document pour stocker des métadonnées (données exif) de l'image et éventuellement un lien vers l'image. – vvs