我在iPhone 6上使用Xcode 6.1.1,iOS8.1进行测试。
基本上,我使用Core Data来存储数据,NSMutableURLRequest
将HTTP Post请求发送到服务器上的PHP
,然后插入MySQL
。
NSMutableURLRequest *newRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *allData = [[NSFetchRequest alloc] init];
[allData setEntity:[NSEntityDescription entityForName:@"DataStorage" inManagedObjectContext:context]];
[allData setIncludesPropertyValues:NO];
// Get Core Data
NSError * error = nil;
NSArray * data = [context executeFetchRequest:allData error:&error];
// For all data in this entity
for (DataStorage * dt in data) {
// Only sample content here
NSString *postContent = [NSString stringWithFormat:@"id=%@&time=%@&",dt.id,dt.time];
NSData *postData = [postContent dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
[newRequest setHTTPMethod:@"POST"];
[newRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
[newRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[newRequest setHTTPBody:postData];
NSError *error;
NSData *returnData = [NSURLConnection sendSynchronousRequest:newRequest returningResponse:nil error:&error];
if (returnData)
{
NSString *json=[[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"Resp string: %@",json);
if (_deleteLocalSwitch.on) {
[context deleteObject:dt];
}
}
else
{
NSLog(@"Error: %@", error);
break;
}
}
我使用在线发现的标准http post方法(如上所示),如果我只发送几个条目(< 20),完美。但是,在请求数量增加(> 50个核心数据条目)之后,我在错误的 39个成功请求之后收到错误:
错误:错误域= NSURLErrorDomain代码= -1005“网络连接丢失。” UserInfo = 0x7fd8b0c86140 {NSUnderlyingError = 0x7fd8b0c824e0“网络连接丢失。”,NSErrorFailingURLStringKey = xxxx.php,NSErrorFailingURLKey = xxxx.php,_kCFStreamErrorDomainKey = 4,_kCFStreamErrorCodeKey = -4,NSLocalizedDescription =网络连接丢失。}
我不知道为什么会发生这种错误。猜测是由服务器端或iOS上的某种超时引起的。
我知道我可以尝试构建包含所有数据的XML
并将XML
发送到服务器,这可以解决此问题。但是,最好知道为什么会发生这种情况,并且还会在改变大量代码时挽救我的生命。
注意:这是不 Xcode / iOS模拟器错误的问题,可以在其他帖子中找到。当我在两者 iPhone6&上测试应用程序时,我遇到了同样的错误模拟器。当我使用 localhost
&进行测试时,我也遇到了同样的错误。在线服务器。
感谢您阅读这个长期的问题!