ASIHTTPRequest 可以重试吗?

发布于 2024-11-09 00:12:11 字数 516 浏览 0 评论 0原文

有没有办法重试 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再次启动原始请求(假设这在某种程度上是可能的)?

Is there a way to retry an ASIHTTPRequest? I'm using custom authentication in a REST service instead of basic HTTP authentication and I would like to retry a request if the session has expired. Calling startAsynchronous a second time on a request causes an exception. I would like to do something like this:

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

loginAndRetryRequest: will do another ASIHTTPRequest to login and when it is complete it will start the original request again from it's CompletionBlock (assuming this is possible somehow)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痞味浪人 2024-11-16 00:12:11

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

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

另一个选项可以是检查其源代码,以了解在超时情况下自动重试是如何完成的超时,但复制并重新发出请求应该可以工作(这就是首先添加对 NSCopying 支持的原因)。

It should be possible to make a copy of the request and then execute -startAsynchronous again on the copy.

Support for NSCopying protocol was added in release 1.5, which also includes automatic retry in case of timeout (selector -setNumberOfTimesToRetryOnTimeout:.

Another option could be checking their source code to see how the automatic retry is done in case of timeout, but copying and re-issuing the request should work (that was the reason to add support for NSCopying in the first place).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文