Pergunta

Eu estou usando um NSMutableURLRequest se conectar a um web site para obter uma resposta JSON. Eu estou fazendo isso por gerar o pedido, e em seguida, usando NSURLConnection com um delegado do auto para lidar com a conexão assíncrona. Eu tenho implementado todos os métodos de delegado normais:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

Tudo funciona perfeitamente com a obtenção de volta dados, lidar com quaisquer erros que ocorrem, etc. No entanto, com o tempo de espera no set NSURLRequest para 10 segundos Eu não parecem ter chamado esses métodos (eu esperava que o didFailWithError de ser chamado ). Ele só fica lá para sempre e eu não tenho nenhuma notificação de que ele expirou.

Lendo a documentação da API para iPhone Eu não vejo qualquer menção de que deve acontecer quando o tempo limite ocorre, só que você pode definir o valor do tempo limite. O que deve acontecer? Eu não vi quaisquer outros métodos de delegado na API que iria ajudar. Eu não tenho que checar manualmente por tempos de espera, não é? São tempos de espera apenas para solicitações síncronas?

Foi útil?

Solução

Seu tempo de espera é recebido neste método:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

Outras dicas

u vai br receber esse tipo de iofo:

nos deixou com

erro: Erro de domínio = Código NSURLErrorDomain = -1001 UserInfo = 0xed4870 "Expirou"

O comportamento de tempo limite é um pouco peculiar, consulte este segmento em fóruns de desenvolvedores da Apple.

O que eu fiz foi o seguinte:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    if (error.code == -1001){
        [self showTimeoutAlert];//My method to show dialog with timeout message.
    } else {
        [self showInvalidURLAlert];//My method to show dialog with bad URL message.
    }
}

Como disse antes -1001 é para tempo limite, em outros testes eu tenho -1003 (para o mau URL ou não disponível conexão).

Eu estava com o objetivo de tempo limite tratar de modo que qualquer outra coisa I tratado como mau URL.

Coloque algumas declarações de log em cada método e verificar o que eles dão. Sempre que ele expira, você tem definitivamente uma notificação na consola sobre o tempo limite. Eu estou recebendo essa notificação. Verifique se o seu código e se você ainda está tendo problemas, avise-nos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top