웹 서비스가 있습니다. 서버에 접속하면 응답을 얻기 위해 거의 1 분 이상 걸립니다. 50 초 안에 응답이 null 인 시뮬레이터에서 앱을 실행할 때. 몇 분 더 기다리지 않습니다. 내 코드는 아래에 나와 있습니다.NSURLConnection 시간 초과
- (void)functionCalling
{
functionName = @"productList";
baseURL = [NSString stringWithFormat:@"http://192.168.0.13/dashly-server/mobile/ Magento-IOS/lib.php?functionName=%@",functionName];
NSLog(@"%@",dateSelect);
NSString *baseString = [NSString stringWithFormat:@"&store_url=%@&api_username=%@&api_key=%@&fromDate=%@&toDate=%@",store_url, api_username, api_key, fDate, tDate];
NSString *completeURL3 = [baseURL stringByAppendingString:baseString];
NSURL *url3 = [NSURL URLWithString:[completeURL3 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"url is %@", url3);
//NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url3];
NSMutableURLRequest *theRequest=[[NSMutableURLRequest alloc]
initWithURL:url3
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:180.0];
theConnection3 = [NSURLConnection connectionWithRequest:theRequest delegate:self];
NSLog(@"connection = %@",theConnection3);
if(theConnection3)
{
//webData = [NSMutableData dataWithData:[completeURL1 dataUsingEncoding:NSUTF8StringEncoding]];
webData = [NSMutableData dataWithContentsOfURL:url3];
theRequest.HTTPBody = webData;
NSLog(@"web response data %@", webData);
NSString *response3 = [[NSString alloc]initWithData:webData encoding:NSUTF8StringEncoding];
NSLog(@"response products = %@", response3);
}
else
{
NSLog(@"theConnection is NULL");
}
}
#pragma mark
#pragma mark Actions - NSURLConnection Methods
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[self->webData setLength:0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self->webData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"%@" , error);
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError *error;
NSString *resStr = [[NSString alloc]initWithData:webData encoding:NSASCIIStringEncoding];
NSLog(@"dash response = %@", resStr);
if ([resStr isEqualToString:@"null"]) {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"No Products Today..." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
}
else if ([resStr length]==0)
{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"Web services connection failed..." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
}
else
{
id jsonObject3 = [NSJSONSerialization JSONObjectWithData:webData options:kNilOptions error:&error];
NSArray *array = (NSArray *)jsonObject3;
for(int i=0;i<[array count];i++)
{
dict = [array objectAtIndex:i];
[productIdArray addObject:[dict objectForKey:@"productId"]];
[productNameArray addObject:[dict objectForKey:@"name"]];
[ordersArray addObject:[dict objectForKey:@"nooforders"]];
[priceArray addObject:[dict objectForKey:@"price"]];
}
NSLog(@"product id array %@", productIDArray);
NSLog(@"name array %@", productNameArray);
NSLog(@"orders array %@", ordersArray);
NSLog(@"price array %@", priceArray);
}
}
50 초에 서버를 친 후 "웹 서비스 연결에 실패했습니다"라는 경고 메시지가 나타납니다. 심지어 나는 오랜 시간 동안 기다리지 않을 180 초 간격을 보내고있다. 이 문제를 어떻게 해결할 수 있습니까? 응답이 올 때까지 기다리고 싶습니다. 여기서 NSOperationQueue를 사용할 수 있습니까? 미리 감사드립니다.
제품을 표시하는 데 1 분이 필요합니까? – ffarquet
하지만 저장소가 기본적으로 느립니다. 아무 것도 할 수 없습니다. – vishnu
50 초 내에 응답을 렌더링 할 수없는 경우 요청을 종료하는 서버가 될 수 있습니다. 그러나 나는 허풍에 동의한다. 그것은 오랜 시간을 기다리는 지옥이다. – user623396