Настроить requestFinished, requestFailed условия для ASIHTTPRequest - PullRequest
0 голосов
/ 09 марта 2012

Я бы хотел настроить ASIHTTPRequest, чтобы быть более разборчивым при запуске requestFinished.В частности, я только хочу, чтобы requestFinished вызывался, когда код состояния 200.Кроме этого, для всех других кодов состояния или сбоев на уровне сети я хочу requestFailed.Есть ли способ полностью переопределить функциональность по умолчанию, или я открываю банку с червями, пытаясь изменить ASIHTTPRequest?Если есть способ сделать это чисто, где это?

Ответы [ 3 ]

1 голос
/ 09 марта 2012

попробуйте добавить фрагмент кода здесь в ASIHTTPRequest.m

- (void)reportFinished
{
    if (self.responseStatusCode !=200){
    //this way, you can get error message you want in requestDidFailed:.
    return [self failWithError:[NSError errorWithDomain:@"Failed" code:ASIConnectionFailureErrorType userInfo:[NSDictionary dictionaryWithObjectsAndKeys:@"Failed to get connection",NSLocalizedDescriptionKey,nil]]];
    }

     ... 
     ... 
}
1 голос
/ 09 марта 2012

Подкласс ASIHTTPRequest и предоставьте свой собственный метод reportFinished, который делает то, что делает существующий, за исключением того, что он должен сначала проверить responseStatusCode, вызывая делегат сбоя, если это не 200.

0 голосов
/ 09 марта 2012

Вы должны реализовать request:didReceiveResponseHeaders: метод ASIHTTPRequestDelegate, словарь заголовков должен содержать код ответа.

Если значение не подходит, просто вызовите [request failWithError:error]. ошибка может быть, например, ASIRequestCancelledError.

В этом случае вам не нужно получать все тело ответа.

...