是否可以重试ASIHTTPRequest?

时间:2011-05-19 17:00:47

标签: ios asihttprequest

有没有办法重试ASIHTTPRequest?我在REST服务中使用自定义身份验证而不是基本HTTP身份验证,如果会话已过期,我想重试请求。在请求上第二次调用startAsynchronous会导致异常。我想做这样的事情:

[request setCompletionBlock:^{
        if ([request responseStatusCode] == 500)
        {
            // try to login again in case token expired
            [server loginAndRetryRequest:request];
        } else {
            // parse response
        }
    }];

loginAndRetryRequest:将执行另一个ASIHTTPRequest登录,当它完成后,它将再次从它的CompletionBlock启动原始请求(假设这可能以某种方式)?

1 个答案:

答案 0 :(得分:5)

应该可以复制请求,然后在副本上再次执行-startAsynchronous

在版本1.5中添加了对NSCopying协议的支持,其中还包括超时情况下的自动重试(选择器-setNumberOfTimesToRetryOnTimeout:

另一个选项可能是检查他们的源代码,以查看在超时的情况下如何完成自动重试,但复制和重新发出请求应该有效(这是首先添加对NSCopying的支持的原因)。