iOS8 HTTP Post网络连接丢失错误

时间:2015-02-01 16:51:34

标签: php ios objective-c http-post

我在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&进行测试时,我也遇到了同样的错误。在线服务器。

感谢您阅读这个长期的问题!

0 个答案:

没有答案