我在这里详细了解Upload file via Soap message。但是我有另一个问题,如果Soap中有大文件,那么它会产生内存问题导致内存中的文件加载,以便通过 Soap消息发送。
我读到了关于MTOM(消息传输优化机制)的信息。 "当您使用MTOM / XOP优化 SOAP消息时, XOP 处理将其序列化为MIME Multipart / Related消息。 XOP处理从 SOAP消息中提取 base64Binary 数据,并将其作为单独的二进制附件打包在 MIME 消息中,方式与e类似。邮件附件"
我已经找到了如何在java Soap with Attachments and MTOM in Java
中使用这种方法现在我有两个问题: -
任何帮助都会受到欢迎。谢谢。
答案 0 :(得分: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
}