无法使用ASIFormDataRequest将图像从iphone Photo Picker上传到服务器

时间:2010-06-28 16:40:09

标签: iphone objective-c upload asihttprequest

基本上我正在尝试使用ASIFormDataRequest上传图像。这是我的以下代码

ASIFormDataRequest *request = [ASIHTTPRequest requestWithURL:urlImg];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"Content-Type" value:@"application/xml"];
[request setDelegate:self];

[request setTimeOutSeconds:500];  
NSData *imageData = UIImagePNGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"]);
[request setData:imageData forKey:@"media"];
[request startAsynchronous];

基本上我的应用程序崩溃并给我以下错误:

[ASIHTTPRequest setData:forKey:]: unrecognized selector sent to instance 0x8880db0
2010-06-28 12:33:49.803 vdq[7658:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[ASIHTTPRequest setData:forKey:]: unrecognized selector sent to instance 0x8880db0'

不确定原因,但方法setData似乎在该实例中。

1 个答案:

答案 0 :(得分:2)

一些事情。你得到这个的原因是因为第一行:

ASIFormDataRequest *request = [ASIHTTPRequest requestWithURL:urlImg];

正在创建ASIHTTPRequest类型的新对象。你需要这样做:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:urlImg];

此外,您无需设置RequestMethod,因为这是自动完成的。最后,如果服务确实需要上传XML文档。那么您将无法使用FormData。格式数据仅在您上载匹配和HTML表单的数据并且使用多部分表单或URL编码数据进行编码时才会生成。如果需要XML,则需要自己构建XML文档,然后发布该文档中的数据。