缓冲区不能为Null参数:Buffer

时间:2009-12-12 06:46:51

标签: c# iphone objective-c upload

我正在处理从iphone到C#网络服务的图片上传。这是iPhone代码

NSString *soapMessage=[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/\">\n"
                       "<soap:Body>\n"
                       "<PutImage xmlns=\"http://tempuri.org/\">\n"
                       "<ImgInputString>%@</ImgInputString>\n"
                       "</PutImage>\n"
                       "</soap:Body>\n"
"</soap:Envelope>\n",imageString];

NSLog(soapMessage);
NSURL *url=[NSURL URLWithString:@"http://192.168.2.7/ImageWebService/Service1.asmx"];
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:url];
NSString *msgLength=[NSString stringWithFormat:@"%d",[soapMessage length]];

[theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue:@"http://tempuri.org/PutImage" forHTTPHeaderField:@"SOAPAction"];
[theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

但是当我访问服务器时,我收到此错误消息。但是当我直接将图像字符串复制并粘贴到webservice中时,我得到了图像。它只是从iPhone上抛出错误。

请帮忙

2 个答案:

答案 0 :(得分:0)

我也遇到过这方面的麻烦,我相信这是编码,(MS服务器具体?)这就是我的建议。

 [theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]];

答案 1 :(得分:0)

我解决了这个问题。我已将服务器端输入更改为字符串(bas64字符串),但我正在点击的Web服务不是更新的,是前一个byte []输入。所以,我将inetpub / wwwroot / bin中我的web服务的dll挂钩到新的chnaged Web服务.dll。现在它就像一个魅力。

在NWCoder中,您可以将字符串加密为base64编码,并将其作为字符串发送到c#web serice,然后将i转换为byte []。这对我来说很顺利。任何方式都可以解决你的建议。