Как отправить большой пользовательский объект в.net веб-сервис в Android

Я могу отправить пользовательский объект на мой веб-сервис.net, и мой веб-метод работает абсолютно нормально. Я тестировал этот код на нескольких телефонах, и результат был успешным, но когда я пробовал его на мобильном телефоне Samsung, он начал давать мне исключение.

Я обнаружил, что проблема в MemoryOutOfException, которая возникает из-за того, что я записал видео большого размера и пытаюсь преобразовать его в байт [], но я должен был записывать видео менее высокого качества, которое работает в Micromax и Motorola, но не в Samsung (остальные бренды I пока не знаю)

takeVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,
            MYVIDEOQUALITY);

так вот некоторые из решений, которые я думаю, я должен иметь:
1. Либо записывайте видео меньшего размера из Camera Intent во всех мобильных (не работает в Samsung).
2. Или закодируйте ваш метод загрузки видео таким образом, чтобы он загружал видео порциями. но я должен отправить больше информации о видео, поэтому я создал собственный объект для обработки и я также реализовал KVMSerializable и использовал Marshal также. Теперь я не знаю, как отправить Большой пользовательский объект кусками.

Я видел это, но не могу отправить дополнительную информацию вместе с ней. это отправить только видео файл в одиночку.

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

Вот код, который я использую для загрузки видео:

private String SaveMedia(String Email, byte[] Media, String MediaType,
            String MediaExt) {
        SoapSerializationEnvelope envelope;
        SoapObject request = new SoapObject(
                HelpMeConstant.WSDL_TARGET_NAMESPACE, "SaveMedia");
    //  Log.i(TAG, "Email : " + Email + ", Media : " + Media                + "MediaType : " + MediaType + ",MediaExt : " + MediaExt);

        MediaAvidance mediainfo = new MediaAvidance();
        mediainfo.EmailId = Email;
        mediainfo.Media = Media;
        mediainfo.MediaExt = MediaExt;
        mediainfo.MediaType = MediaType;

        PropertyInfo pi = new PropertyInfo();
        pi.setName("avidanceinfo");
        pi.setValue(mediainfo);
        pi.setType(mediainfo.getClass());

        request.addProperty(pi);

        envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    //  Log.i("SaveMedia", "Serialising..");
        new MarshalBase64().register(envelope);
        envelope.dotNet = true;
        envelope.headerOut = HelperMethod.addAuthentication();
        envelope.implicitTypes = true;
        envelope.setOutputSoapObject(request);

        HttpTransportSE httpTransport = new HttpTransportSE(
                HelpMeConstant.SOAP_ADDRESS);

        Object response = null;

        try {
        //  Log.i("SaveMedia", "Calling service..");
            httpTransport.call(HelpMeConstant.SOAP_ACTION + "SaveMedia",
                    envelope);
    //      Log.i("SaveMedia", "getting response..");
            response = envelope.getResponse();
        } catch (Exception exception) {
    //      Log.e("SaveMedia", "I got an error :", exception);
            response = exception.toString();
        }

        return response.toString();
    }

Заранее спасибо за ваш ответ.

0 ответов

Другие вопросы по тегам