Как опубликовать список <PointF>с модифицированной multipart на Android? - PullRequest
1 голос
/ 23 мая 2019

Я хочу сделать приложение для Android, которое может отправлять изображения и PointF с холста.У меня уже есть успех, чтобы отправить изображение с Retorifit Multipart.и моя следующая цель - отправить список.но я запутался, как отправить его?

это код для отправки изображения


final ProgressRequestBody fileBody = new ProgressRequestBody(uploadFile, this);
                final MultipartBody.Part body = MultipartBody.Part.createFormData("image", uploadFile.getName(), fileBody);

                new Thread(new Runnable() {
                    @Override
                    public void run() {

                        Observable<String> upload = apiService.uploadFile(body);

                        upload.subscribeOn(Schedulers.io())
                                .observeOn(AndroidSchedulers.mainThread())
                                .unsubscribeOn(Schedulers.io())
                                .subscribe(new Observer<String>() {
                                    @Override
                                    public void onSubscribe(Disposable d) {

                                    }

                                    @Override
                                    public void onNext(String s) {

                                        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

                                        Glide.with(PolygonActivity.this)
                                                .load(s)
                                                .apply(RequestOptions.skipMemoryCacheOf(true))
                                                .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.NONE))
                                                .into(sourceImageView);
                                    }

                                    @Override
                                    public void onError(Throwable t) {
                                        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
                                        Toast.makeText(PolygonActivity.this, "error response: " + t.getMessage(), Toast.LENGTH_SHORT).show();
                                    }

                                    @Override
                                    public void onComplete() {

                                    }
                                });

                    }}).start();

это мой ApiService


@Multipart
    @POST("api/upload")
    Observable<String> uploadFile(@Part MultipartBody.Part file);

и я хочу отправить личный список pointFS= новый ArrayList <> ();,когда я поднимаю точку на pointFS, она показывает [PointF (312.31,432.1212), PointF (344.34,53.131)].поэтому я запутался, как отправить его через модернизацию.Мне нужна твоя помощь.

1 Ответ

0 голосов
/ 23 мая 2019

Попробуйте сделать это так

    Gson gson = new Gson(); 
    String pointFListString= gson.toJson(pointFSArrayList);
RequestBody pointFList= RequestBody.create(MediaType.parse("multipart/form-data"), pointFListString);

    @Multipart
        @POST("api/upload")
        Observable<String> uploadFile(@Part MultipartBody.Part file,
                                      @Part("pointFArrayKey") RequestBody pointFList);
...