Как отправить большой пользовательский объект в.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();
}
Заранее спасибо за ваш ответ.