2013-08-06 54 views
5

我在這裏找到了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

回答

0

我已經使用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