2015-06-01 1 views
0

Я создаю приложение, которое вызывает веб-сервис на каждом контроллере view.The приложение отлично работает на Simulator, но на самом устройстве работает очень медленно или иногда он возвращает нулевой ответ, поэтому приложение вылетает из-за нулевого ответа от sever.Is есть решение для решения этой проблемы. Я очень новичок в объектно-c-программировании. Пожалуйста, предложите мне способ решить проблему. Спасибо большое. :)NSURLResponse приходит быстро в Simulator, но на самом устройстве он приходит через некоторое время или возвращает NULL

здесь Я добавляю свою часть кода, который отправляет запрос на веб-службу и получает ответ.

{ 
    NSURL *url = [NSURL URLWithString:@"http://www.someurl.com/somewebservice.asmx"]; 
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 

    [theRequest addValue:@"somehost.in" forHTTPHeaderField:@"Host"]; 
    [theRequest addValue:@"someUrl/someWebMethod" forHTTPHeaderField:@"SOAPAction"]; 
    [theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
    [theRequest addValue:msgLength forHTTPHeaderField:@"Content-Type"]; 
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

    NSURLConnection *theConnection = 
    [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

    NSURLResponse *response1 = [[NSURLResponse alloc] init];; 
    self.webResponseData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; 

    self.response = [[NSURLResponse alloc] init]; 
} 

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
    NSLog(@"Printing response...\n"); 
    NSLog(@"%@",response); 
} 


-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [self.webResponseData appendData:data]; 
} 
+0

Проверьте подключение к устройству. –

+0

Спасибо Nekak за ответ. Я использую wi-fi соединение. – Omkar

+0

Но вы не собираетесь показывать нам реальный код? – matt

ответ

1

Вы используете sendSynchronousRequest. Не. Никогда, никогда, никогда сеть синхронно на основной нити.

+0

Кроме того, если вам не нужна обратная совместимость, вы не должны использовать NSURLConnection. Он заменяется NSURLSession. – matt

+0

Но сэр, если нужно ждать ответа, то что делать? – Omkar

+0

Благодарю вас, сэр за ответ. – Omkar