【发布时间】:2014-04-25 06:32:39
【问题描述】:
我有目标 C 代码:
NSString * url = [NSString stringWithFormat:@"http://tragicclothing.co.uk/Retort/imageupload.php"];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSMutableData *body = [[NSMutableData alloc]init];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\"; filename=\"image.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: audio/basic\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:_imageDataToSend];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
//Send the Request
NSData* returnData = [NSURLConnection sendSynchronousRequest: request
returningResponse: nil error: nil];
//serialize to JSON
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];
//parsing JSON
bool success = [result[@"success"] boolValue];
if(success){
NSLog(@"Success=%@",result[@"msg"]);
}else{
NSLog(@"Fail=%@",result[@"msg"]);
}
当连接到互联网时它工作正常,但当它不是我得到错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“数据参数为零”
【问题讨论】:
-
一般情况下,您应该检查返回值和错误代码。您还应检查响应中的 HTTP 状态代码以及 MIME 类型。你没有,因此你不知道出了什么问题;)
-
不要使用同步请求,除非整个代码在单独的线程中运行。使用异步而不是阻止用户界面。
标签: ios objective-c