我正在尝试从iPad上将图像发送到soap webservice。我还不能成功。我知道我必须为图像发送base64binary我不知道如何获取图像并将其转换为该格式。有许多tutorails但我不明白他们。他们都在做不同的事情。
如何使用webservice简单地发送图像?这是我的代码
NSString *soapMessage = [NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
"<soap:Body>\n"
"<SendData xmlns=\"http://tempuri.org/\">\n"
"<containerId>%@</containerId>"
"<date_>%@</date_>"
"<image1>%@</image1>"
"<image2>%@</image2>"
"<image3>%@</image3>"
"<question1>%@</question1>"
"<question2>%@</question2>"
"<question3>%@</question3>"
"<question4>%@</question4>"
"<question5>%@</question5>"
"<question6>%@</question6>"
"<notes>%@</notes>"
"<transDate>%@</transDate>"
"<userId>%@</userId>"
"<macId>%@</macId>"
"<sFileID>%@</sFileID>"
"</SendData>"
"</soap:Body>\n"
"</soap:Envelope>\n", @"33", @"2013-09-09", @"***image***1" ,@"***image***3" ,@"***image***3" ,@"true" ,@"true", @"true", @"true" , @"true" , @"3", @"notes", @"2013-09-09", @"123", @"mymacid", @"sfileid"];
你有什么建议吗?
我想像发送字符串一样发送它
答案 0 :(得分:1)
我遇到了同样的问题。解决方案将Web服务公开为REST服务(JSON / XML)。在我的情况下,我创建了中间平台,它将作为REST服务提供我的所有soap服务。我的iPhone应用程序将把我所有的有效负载发送到Intermediary平台,后者又通过Web服务调用更新更改。我已将所有图像作为我的json有效负载中的base64字符串传递给中间平台。
答案 1 :(得分:0)
我已在我的应用中实现了此功能。从iPhone拍摄的图像大小将是巨大的。因此,如果您将这些图像转换为base64字符串将降低您的应用程序性能。首先通过调整图像大小来缩小图像大小。
-(UIImage *) imageWithImage:(UIImage *) image scaledTOSize:(CGSize) newsize
{
UIGraphicsBeginImageContext(newsize);
[image drawInRect:CGRectMake(0, 0, newsize.width, newsize.height)];
UIImage *newimag=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newimag;
}
将图像转换为较小或所需大小后,将UIImage转换为NSData
NSData *imageData=[[NSData alloc] initWithData:UIImagePNGRepresentation(image)];
使用下面的第三方库将NSData转换为base64字符串 base64.h 的NSData + Base64.h
NSstring *imageString=[imageData base64EncodedString];
imageString=[imageString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
您可以将字符串发送到您的服务。希望这会对你有所帮助。
答案 2 :(得分:-1)
试试这个tutorial。这会将图像转换为base64。
这可能会对你有帮助。