Хобрук: Ваш путь к мастерству в программировании

Видео не загружается с помощью почтового запроса http

Я пытаюсь загрузить видео на сервер, используя почтовый запрос http.

Когда я отлаживаю и вижу ответ http, он показывает 200 OK

Мой сервисный звонок

http://capmem.omsoftware.co/Event/UploadVideo?callback=localJsonpCallback&chunk=&totalSize=&Filename=&UserID=&EventID=&comment=&VideoLength=

но после этого

String responseStr = EntityUtils.toString(resEntity).trim();

responseStr возвращает {"Success":false,"Data":"Индекс вне допустимого диапазона. Должен быть неотрицательным и меньше размера коллекции.\r\nИмя параметра: index","Message":"test ","Id":0,"Email":null,"url":null,"imgurl":null} и видео не загружается.

Мой код

Получение сведений о видео

int mychunkSize = 100 * 1024;

            videoLength = String.format(
                    "%d min, %d sec",
                    TimeUnit.MILLISECONDS.toMinutes(duration),
                    TimeUnit.MILLISECONDS.toSeconds(duration)
                            - TimeUnit.MINUTES
                                    .toSeconds(TimeUnit.MILLISECONDS
                                            .toMinutes(duration)));
            realPath = getRealPathFromURI(imageFileUri2);
            long size1 = realPath.length();
            size = Long.toString(size1);
            long chunks1 = size1 < mychunkSize ? 1
                    : (realPath.length() / mychunkSize);
            chunks = Long.toString(chunks1);
            file1 = new File(realPath);
            long length1 = file1.length();
            length1 = length1 / 1024;
            filename = file1.getName().toString();
            eventID = user.getnEventID();
            userID = user.getnUserID();
            commentMsg = "videotesting";

Загрузить на сервер

MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            entity.addPart("uploaded", new StringBody(realPath));

            HttpClient httpclient1 = new DefaultHttpClient();
            HttpPost httppost1 = new HttpPost(
                    "http://capmem.omsoftware.co/Event/UploadVideo");

            try {
                // Add your data
                List<NameValuePair> nameValuePairs1 = new ArrayList<NameValuePair>(
                        2);
                nameValuePairs1.add(new BasicNameValuePair("callback",
                        "localJsonpCallback"));
                nameValuePairs1.add(new BasicNameValuePair("filename",
                        filename));
                nameValuePairs1.add(new BasicNameValuePair("ext", "mp4"));

                nameValuePairs1.add(new BasicNameValuePair("totalsize",
                        size));

                nameValuePairs1.add(new BasicNameValuePair("EventID",
                        eventID));
                nameValuePairs1
                        .add(new BasicNameValuePair("UserID", userID));

                nameValuePairs1.add(new BasicNameValuePair("comment",
                        commentMsg));
                nameValuePairs1.add(new BasicNameValuePair("VideoLength",
                        videoLength));
                nameValuePairs1
                        .add(new BasicNameValuePair("chunk", chunks));
                httppost1.setEntity(new UrlEncodedFormEntity(
                        nameValuePairs1));
                // Execute HTTP Post Request
                HttpResponse response = httpclient1.execute(httppost1);
                HttpEntity resEntity = response.getEntity();

                if (resEntity != null) {

                    String responseStr = EntityUtils.toString(resEntity)
                            .trim();

                    // you can add an if statement here and do other actions
                    // based on the response
                }

            } catch (ClientProtocolException e) {
            } catch (IOException e) {
            }

здесь "response" дает 200 OK, но "responseStr" возвращает {"Success":false,"Data":"Индекс вне допустимого диапазона. Должен быть неотрицательным и меньше размера коллекции.\r\nИмя параметра : index","Message":"test","Id":0,"Email":null,"url":null,"imgurl":null}

Мне нужно добавить куски в цикл со смещением, сделать это в цикле, пока общий размер и смещение не сравняются.

Пожалуйста помоги..


Ответы:


1

Вы ошибочно используете длину пути для расчета количества блоков данных для отправки.

Измените это:

long chunks1 = size1 < mychunkSize ? 1
                : (realPath.length() / mychunkSize);

To:

long chunks1 = size1 < mychunkSize ? 1
                : (size1 / mychunkSize);
26.05.2014
  • Это все равно не правильно. И есть еще одна незаконченная ветка по этому вопросу. 26.05.2014
  • Я опубликовал только то, что показалось мне неправильным (это не значит, что остальная часть кода безошибочна). Вы можете опубликовать свои исправления ... 26.05.2014
  • Новые материалы

    Создание успешной организации по науке о данных
    "Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

    Технологии и проблемы будущей работы
    Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

    Игорь Минар из Google приедет на #ReactiveConf2017
    Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...