【问题标题】:Upload file via Soap message using MTOM in iOS在 iOS 中使用 MTOM 通过 Soap 消息上传文件
【发布时间】:2013-08-06 12:06:08
【问题描述】:

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

我读到了 MTOM(消息传输优化机制)。 “当您使用 MTOM/XOP 优化 SOAP 消息 时,XOP 处理将其序列化为 MIME 多部分/相关消息。XOP 处理提取 base64Binary 来自 SOAP 消息 的数据,并将其打包为 MIME 消息中的单独二进制附件,其方式类似于电子邮件附件”

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

现在我有两个问题:-

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

如有任何帮助,我们将不胜感激。在此先感谢。

【问题讨论】:

  • 我也有同样的问题。希望有人能回答这个问题。
  • 有人设法在 iOS 中获取附件?
  • 关于这个问题的任何更新?有人对此有任何解决方案吗?

标签: ios soap attachment mtom xop


【解决方案1】:

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

首先你需要下载 Restkit。

以下是使用 RestKit 的 MTOM 的代码 sn-p。

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
    }

【讨论】:

猜你喜欢
  • 2012-08-10
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 2019-04-25
相关资源
最近更新 更多