2016-02-16 8 views
0

Я хочу выполнить свою веб-службу SOAP асинхронно, потому что я получил некоторое отставание в получении данных при одновременном вызове синхронно. Также мне удалось получить результат при вызове одного веб-сервиса при вызове нескольких веб-служб (просмотр загрузился) или в (вид появится), я не смог получить данные.Как вызвать асинхронный веб-сервис SOAP?

Может кто-нибудь сказать, как назвать асинхронным SOAP WebService: Вот мой код

cws = [[CustomWebService alloc]init]; 

    NSString *soapMessage = [NSString stringWithFormat:@"my soap string"]; 


    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(msgCount) name:@"my response name" object:nil]; 
    NSDictionary *Details=[[NSDictionary alloc]initWithObjectsAndKeys:nil]; 
    [cws getSoapAction:@".........." andNameSpace:@"" andDetails:Details andUrlIs:[AppDelegate URLSource] andSoapMessage:soapMessage ]; 
    [cws getPageName:@"my response name"]; 
    NSLog(@"SOAP MESSAGE IS %@",soapMessage); 

И я получаю ответ здесь:

-(void)msgCount 
{ 
[[NSNotificationCenter defaultCenter]removeObserver:self]; 
NSMutableDictionary *diict=[[NSMutableDictionary alloc]initWithDictionary:[cws msgCount]]; 
NSLog(@"the response is %@",diict); 

} 
+0

u можете использовать afnetwork или asihttp или nsurlrequest – vaibby

+0

vaibby Tanks я попробую. – Arun

+0

, который 1 u r gona попробовать? – vaibby

ответ

0

вы можете обернуть WebService вызова в GCD асинхронном блок для того, чтобы код выполнялся асинхронно в фоновом режиме

dispatch_async(dispatch_get_main_queue(), ^{ 
     //code that should run asynchronously 
}); 
+0

какой код я хочу обернуть здесь 1. soapStringMethod или метод ответа 2.my - (void) msgCount – Arun

+0

ваш метод мыльной струны, можно просто поместить весь ваш код в блок и должен работать – Fonix

+0

спасибо Fonik, я постараюсь на ваш выбор. – Arun

0
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"UR URL"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 
[request setHTTPMethod:@"POST"]; 
NSString *postString = @"UR KEY1=UR VALUE1"; //for single variable 

//OR for Multiple 

[request setValue:@"UR VALUE1" forKey:@"UR KEY1"]; 
[request setValue:@"UR VALUE2" forKey:@"UR KEY2"]; 

[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]]; 
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
{ 
    if (error) { 
         NSLog(@"Error,%@", [error localizedDescription]); 
        } else { 
         NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]); 
        } 
}]; 

 Смежные вопросы

  • Нет связанных вопросов^_^