NSURLConnection检查服务器上的定期更新

时间:2015-01-22 10:06:58

标签: ios ipad nsurlconnection nstimer

我有一个函数“downLoadButtonStatusSetter”,它使用计时器每15秒调用一次。 然后它调用发送“sendInstantGetInfoRequest”数据到服务器并检查连接是否可用,并设置一个标志。 应用程序正常工作,但在无法连接到服务器时进入繁忙状态一段时间。 我应该如何调用这些方法,以便“它每15秒调用一次并设置标志,即使它无法连接到服务器,  而不影响程序的主要执行。我尝试过线程调用的组合,但不能,请帮助。

计时器调用代码:

updateCheckTimer= [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(downLoadButtonStatusSetter) userInfo:nil repeats:YES];  

ButtonStatusSetter代码:

-(BOOL) downLoadButtonStatusSetter
{

    [self sendInstantGetInfoRequest];
    if( instantGetInfoOffLineForButton)
        {
            //setbutton color etc....
        }
}

-(NSArray *)sendInstantGetInfoRequest
{

    NSString *getInfoURL=[SAGlobal getInfoURL];
    NSArray *keys = [NSArray arrayWithObjects:@"username",@"password", nil];
    NSArray *objects = [NSArray arrayWithObjects:SharedAppDelegatee.SAloginName, SharedAppDelegatee.SAloginPassword, nil];
    jsonManager = [[JsonRequestManager alloc] init];
    SAJSonResult* resultk=[jsonManager sendJsonAsPOSTData: keys AndValues:objects toURL: getInfoURL];
if(resultk.jsonError)
{
    instantGetInfoOffLineForButton=true;
}
else{
    instantGetInfoOffLineForButton=false;
}

return resultk.jsonResult;

}

发送代码的JSON请求:

-(SAJSonResult *) sendJsonAsPOSTData:(NSArray *) keys AndValues:(NSArray *) values toURL:(NSString *)anURL
{
////..................
NSURL *url1 = [NSURL URLWithString:anURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url1];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: jsonData];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
NSURLResponse *theResponse =[[NSURLResponse alloc]init];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&jsonError];
if (jsonError) {
   ..............
    return jResult;
}
else
{
   ...............

    return jResult;

}
}
}

0 个答案:

没有答案