Загрузите файл с помощью сообщения Soap, используя MTOM в iOS

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

Я читал о MTOM (Механизм оптимизации передачи сообщений). "Когда вы используете MTOM/XOP для оптимизации сообщения SOAP, обработка XOP сериализует его в сообщение MIME Multipart/Related. Обработка XOP извлекает данные base64Binary из сообщения SOAP и упаковывает их как отдельные двоичные вложения в сообщении MIME, в аналогично вложениям в электронную почту "

Я нашел, как использовать этот подход в Java здесь Soap с вложениями и MTOM в Java

Теперь у меня есть два вопроса:

  1. Используя подход MTOM/XOP в iOS, мы можем уменьшить или решить проблему с памятью, как описано выше.
  2. В программировании Как мы можем использовать подход MTOM/XOP в iOS.

Любая помощь будет оценена. Спасибо заранее.

1 ответ

Я сделал тот же запрос, используя Rest Kit.Rest Kit позволяет отправлять вложения в спецификации MTOM.

Первое, что вам нужно, это скачать Restkit.

Ниже приведен фрагмент кода для MTOM с использованием RestKit.

abv.h 
    #import "RestKit/RestKit.h"
    RKObjectManager *man;
    RKObjectLoader *loader;   

abc.m

     RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);
    //Start Progress bar
    RKParams * params = [[RKParams alloc] init];
    UIImage *image=[UIImage imageNamed:@"zbar-samples.png"];
    RKObjectManager *man;
    NSData * fileData=UIImageJPEGRepresentation(image,0.7);


    [params setValue:@"1234" forParam:@"encryptedToken"];
    [params setValue:modelObj.docNameTobeSent
            forParam:@"documentName"];
    RKParamsAttachment * attachments = [params setData:fileData forParam:@"file"];
    [attachments setMIMEType:@"image/jpeg"];
    [attachments setFileName:[NSString stringWithFormat:@"%@.jpeg",modelObj.name]];
    self.man = [RKObjectManager objectManagerWithBaseURL:YOUR URL];
    self.loader = [self.man loadObjectsAtResourcePathUsingPOSTRPC:@"upload.form"    objectMapping:nil PostParams:params delegate:self];



     - (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error
    {
    //Handle fail error
    //stop Progress bar
    }

    - (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects
    {
            NSLog(@"%@",@"didLoadObjects");
    }
    - (void)objectLoaderDidFinishLoading:(RKObjectLoader*)objectLoader
    {
        NSLog(@"%@",@"objectLoaderDidFinishLoading");
    //stop Progress bar
    }
    - (void)objectLoaderDidLoadUnexpectedResponse:(RKObjectLoader*)objectLoader
    {
        NSLog(@"%@",@"objectLoaderDidLoadUnexpectedResponse");
    //stop Progress bar
    }
Другие вопросы по тегам