Как отменить вызов веб-службы - IOS - PullRequest
0 голосов
/ 22 июля 2011

В моем приложении iPhone есть аутентификация пользователяЛогин пользователя работает так, что приложение отправляет имя пользователя / пароль в веб-сервис для проверки пользователя.Проблема, с которой я столкнулся сейчас, заключается в том, что я не знаю, как настроить время ожидания (30 секунд) и прекратить запрашивать данные из веб-службы?

NSString *soapMsg = 
    [NSString stringWithFormat:
     @"<?xml version=\"1.0\" encoding=\"utf-8\"?>...", username, password
     ];

    NSURL *url = [NSURL URLWithString: @"http://...Service.asmx"];      

    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];    
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMsg length]];

    [req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];   
    [req addValue:@"http://.../LoginUser" forHTTPHeaderField:@"SOAPAction"];    
    [req addValue:msgLength forHTTPHeaderField:@"Content-Length"];   
    [req setHTTPMethod:@"POST"];
    [req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];

    conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];

    if (conn) 
    {
        webData = [[NSMutableData data] retain];
    }    

Ответы [ 3 ]

4 голосов
/ 22 июля 2011
[req setTimeoutInterval:urInterval];
setTimeoutInterval:

Устанавливает интервал ожидания приемника в секундах.

- (void)setTimeoutInterval:(NSTimeInterval)timeoutInterval

Параметры

timeoutInterval

The timeout interval, in seconds. If during a connection attempt

запрос остается бездействующим дольше интервала ожидания, считается, что запрос истек.Интервал ожидания по умолчанию составляет 60 секунд.

0 голосов
/ 22 июля 2011

Может быть ASIHTTP может вам помочь?

Кроме того, если я вас правильно понял, в основном похожая проблема в stackoverflow.

0 голосов
/ 22 июля 2011

Вы можете использовать метод отмены NSURLConnection

/*! 
    @method cancel
    @abstract Cancels an asynchronous load of a URL.
    @discussion Once this method is called, the asynchronous load is
    stopped, and the NSURLConnectionDelegate associated with the
    receiver will no longer receive any asynchronous callbacks for
    this NSURLConnection.
*/
- (void)cancel;
...