我在这里详细找到了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
现在我有两个问题:
如上所述的内存问题。
任何帮助都将被申请。在此先感谢您。
最佳答案
我已经使用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/