objective-c将图像发送到.net soap webservice

时间:2013-05-24 08:29:33

标签: objective-c xcode web-services soap

我正在尝试从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"];
你有什么建议吗?

我想像发送字符串一样发送它

3 个答案:

答案 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。

这可能会对你有帮助。