我今天在这工作了几个小时,而且我非常接近解决方案,但显然需要一些将此关闭的人的帮助。我正在尝试将图像发布到iPhone的Web服务。我先发布代码,然后解释一切我已经试过:iPhone UIImage上传到网络服务
NSData *imageData = UIImageJPEGRepresentation(barCodePic, .9);
NSString *soapMsg =
[NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"utf-8\"?><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/\"><soap:Body><WriteImage xmlns=\"http://myserver/imagewebservice/\"><ImgIn>%@</ImgIn></WriteImage></soap:Body></soap:Envelope>", [NSData dataWithData:imageData]
];
NSURL *url = [NSURL URLWithString:@"http://myserver/imagewebservice/service1.asmx"];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength =
[NSString stringWithFormat:@"%d", [soapMsg length]];
[req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[req addValue:@"http://myserver/imagewebservice/WriteImage" forHTTPHeaderField:@"SOAPAction"];
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[req setHTTPMethod:@"POST"];
[req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if (conn) {
webData = [[NSMutableData data] retain];
}
的第一件事,这个代码什么,但图像效果还算不错。 Web服务正在我的本地网络上运行,我可以随意更改源代码,如果将“ImgIn”参数更改为字符串并传入字符串,一切正常,我会得到一个返回值没有问题。因此,根本没有连接问题,我可以在此服务器上调用并从此Web服务获取数据,而不会出现任何问题。但是我需要通过ImgIn参数将图像上传到这个Web服务,所以上面的代码是我迄今为止最好的。我也有处理didReceiveResponse,didReceiveData,didFailWithError等。上面的代码每次都会触发didRecieveResponse。但是didReceiveData永远不会被解雇,它就像Web服务本身从未运行过。当我调试Web服务本身时,它在我使用字符串参数时运行和调试正常,但是使用图像参数时,它甚至在我调用它时都不会调试。这几乎就像ImgIn参数太长了(当我将它输出到屏幕时它是巨大的)并且Web服务只是扼杀它。我已经阅读了使用这种方法时必须编码到Base64的内容,但我无法找到有关如何完成的任何良好链接。如果这就是我做错了,你能否提供代码,如何做到这一点,而不仅仅是“你需要使用Base64”,我真的很感激它,因为我几乎找不到任何关于如何实现这一点例。除此之外,我有点失落,看起来我正在做其他事情。请帮忙!
感谢
这很好。我不得不放弃Web服务并发布到网页上。我很感激帮助。 – AS2012 2010-05-25 15:14:28
@tc。 :您可以发布您已经回答的此上传方法的代码。 – Nit 2012-05-10 09:15:11