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

问题描述:

我在这里找到了Upload file via Soap message的详细信息。但我有另一个问题,如果在Soap中有大文件,那么它会在内存中通过Soap消息创建内存问题导致文件加载。使用iOS中的MTOM通过Soap消息上传文件

我读了关于MTOM(消息传输优化机制)。 “当您使用MTOM/XOP来优化SOAP消息,所述XOP处理串行化它变成一个MIME多部分/相关消息,该XOP处理从SOAP消息和包它作为单独的提取base64Binary的数据在MIME消息中的二进制附件,以类似的方式,以电子邮件附件”

我已经找到了如何在Java中使用这里Soap with Attachments and MTOM in Java

现在这个方法,我有两个问题: -

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

任何帮助将appriciated.Thanks提前。

+1

我也有同样的问题。希望有人能回答这个问题。 – MiuMiu

+0

有人设法在iOS中获取附件? –

+0

有关此问题的任何更新?有人为此得到任何解决方案? – Raj

我已经使用Rest Kit完成了相同的请求.Rest工具包允许在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 
    } 
+0

你知道SOAP请求和休息请求之间的区别吗?我在这里询问关于使用MTOM的SOAP请求而不是通过REST ..... –

+0

对于SOAP,您可以看到下面的链接http://publib.boulder.ibm.com/infocenter/cicsts/v3r2/index.jsp?topic= %2Fcom.ibm.cics.ts.webservices.doc%2Fmtomxop%2Fdfhws_attachments_and_SOAP.html – Hiren