0

我正在尝试从 iPad 将图像发送到肥皂网络服务。我还不能成功。我知道我必须为图像发送 base64binary 我不知道如何获取图像并将其转换为该格式。有很多教程,但我不明白。他们都在做不同的事情。

我怎样才能简单地使用网络服务发送图像?这是我下面的代码

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"];

你有什么建议吗?

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

4

3 回答 3

1

我遇到了同样的问题。解决将您的 Web 服务公开为 REST 服务(JSON/XML)的问题。就我而言,我创建了中介平台,它将我所有的肥皂服务作为 REST 服务提供服务。我的 iPhone 应用程序会将我的所有有效负载发送到中间平台,然后通过 Web 服务调用更新更改。我已将我的 json 有效负载中的所有图像作为 base64 字符串传递给中间平台。

于 2013-05-24T10:26:27.487 回答
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]; 

您可以将字符串发送到您的服务。希望这会帮助你。

于 2013-05-29T15:10:45.787 回答
-1

试试这个教程。这会将图像转换为base64。

这可能会对您有所帮助。

于 2013-05-24T08:42:49.647 回答