在iOS中使用MTOM通过Soap消息上传文件



我在这里找到了通过Soap消息上传文件的详细信息。但我有另一个问题,如果Soap中有大文件,那么它会产生内存问题,这会导致通过Soap消息发送的文件加载到内存中。

我读过关于MTOM(消息传输优化机制)的文章。"当您使用MTOM/XOP优化SOAP消息时,XOP处理将其串行化为MIME多部分/相关消息。XOP处理从SOAP中提取base64Binary数据,并将其打包为MIME消息中的独立二进制附件,其方式与电子邮件附件类似"

我发现了如何在java中使用这种方法Soap with Attachments和java 中的MTOM

现在我有两个问题:-

  1. 通过在iOS中使用MTOM/XOP方法,我们可以减少或解决内存问题,如上所述
  2. 在编程中我们如何在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
    }

相关内容

  • 没有找到相关文章

最新更新