我在这里详细找到了Upload file via Soap message。但是我还有另一个问题,如果在Soap中有大文件,那么它将创建内存问题,原因是文件中的文件加载到了通过Soap消息发送中。

我阅读了有关MTOM(消息传输优化机制)的信息。 “当您使用MTOM/XOP优化SOAP消息时,XOP处理会将其序列化为MIME Multipart/Related消息。XOP处理从SOAP消息中提取base64Binary数据,并将其打包为MIME消息中的单独二进制附件。与电子邮件附件类似的方式”

我在这里找到了如何在Java中使用这种方法Soap with Attachments and MTOM in Java

现在我有两个问题:

  • 通过在 iOS iOS 中使用MTOM/XOP方法,我们可以减少或解决
    如上所述的内存问题。
  • 在编程中我们如何在 iOS 中使用MTOM/XOP方法。

  • 任何帮助都将被申请。在此先感谢您。

    最佳答案

    我已经使用Rest Kit完成了相同的请求.Rest kit允许发送MTOM规范中的附件。

    您需要做的第一件事是下载Restkit。

    以下是使用RestKit的MTOM的代码片段。

    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
        }
    

    关于ios - 在iOS中使用MTOM通过Soap消息上传文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18079714/

    10-10 20:59