将图像发送到.NET Web服务

时间:2013-08-26 11:08:01

标签: ios .net objective-c web-services

我正在使用.NET Web服务开发iOS应用程序。在其中一个Web服务中,我必须在名为“ file ”的参数中将图像作为 HttpPostedFileBase 发送,该参数将返回图像URL和状态参数作为响应。其实我不确定什么是HttpPostedFileBase。但我试图将其作为字节发送。我从WS获取图像URL为null。我猜WS调用工作正常,但问题在于我发送图像的方式。我使用以下代码将图像数据附加到HTTP正文。

NSData *imageData = UIImageJPEGRepresentation(image, 1);
[postData appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"file.jpeg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:imageData];
[request addValue:@"application/octet-stream" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%i", [postData length]] forHTTPHeaderField:@"Content-Length"];
[postData appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

请告诉我如何才能使其正常运作。如果您需要更多详细信息,请与我们联系。

感谢。

2 个答案:

答案 0 :(得分:0)

对不起伙计们。问题出在HTTP标头中。 @FahriAzimov上面发布的链接(ios Upload Image and Text using HTTP POST)帮助了我。我的不好,实际上我很困惑,.NET Web服务的格式会有所不同。

我必须像正常的网络服务一样发送图像。工作代码如下:

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

[postData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", @"file"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:imageData];
[postData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

非常感谢大家的帮助。

答案 1 :(得分:-1)

使用ASIHTTPRequest库,它非常好,您可以将图像作为附件发送到您的.net服务器.... http://allseeing-i.com/ASIHTTPRequest/How-to-use

here is sample code

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

// Upload a file on disk
[request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg"
forKey:@"photo"];

// Upload an NSData instance
[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];