restkit 0.20.0 中的请求超时

Posted

技术标签:

【中文标题】restkit 0.20.0 中的请求超时【英文标题】:Request timeout in restkit 0.20.0 【发布时间】:2012-12-13 07:32:48 【问题描述】:

我没有找到任何方法来设置 restkit 0.20.0 的超时间隔。

谁能帮忙增加超时间隔。

谢谢

【问题讨论】:

【参考方案1】:

继承RKHTTPRequestOperation并实现方法

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse

    NSMutableURLRequest *requestWithTimeout = [request mutableCopy];
    [requestWithTimeout setTimeoutInterval:30];

    return [super connection:connection willSendRequest:requestWithTimeout redirectResponse:redirectResponse];

【讨论】:

对我不起作用。 RestKit0.26.0 我要试试这个方法***.com/a/16885658/3389683【参考方案2】:

RestKit 现在使用 AFNetworking 作为它的 HTTP 层,所以你需要在 Restkit 的 HTTPClient 中设置它。 See this Issue 在 AFNetworking Github 上。另外,AFNetworking 的创建者 Matt 不太喜欢轻松打开超时属性的想法 (see his reason here)

我希望这能给你一些见解!

【讨论】:

似乎没有办法在 RestKit 2.0 HTTPClient 中设置超时。【参考方案3】:

完整代码

为了更详细/描述性,我的代码如下:

RKHTTPRequestOperation_Timeoutable.h

#import "RKHTTPRequestOperation.h"

@interface RKHTTPRequestOperation_Timeoutable: RKHTTPRequestOperation

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse;

@end

RKHTTPRequestOperation_Timeoutable.m

#import "RKHTTPRequestOperation_Timeoutable.h"

@implementation RKHTTPRequestOperation_Timeoutable

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse

    NSMutableURLRequest *requestWithTimeout = [request mutableCopy];
    [requestWithTimeout setTimeoutInterval:150];//2.5 minutes

    return [super connection:connection willSendRequest:requestWithTimeout redirectResponse:redirectResponse];


@end

然后(这是帮助我了解的部分,其他答案中未提及),向 RKObjectManager 注册您的课程

像这样(请原谅我的不一致,这是我在 swift 中的唯一代码段,而不是 objective c):

RKObjectManager.sharedManager().registerRequestOperationClass(Timeoutable);

【讨论】:

非常感谢,这救了我。

以上是关于restkit 0.20.0 中的请求超时的主要内容,如果未能解决你的问题,请参考以下文章

如何过早取消 RestKit 中的请求并调用“didFailWithError”

在目标 c 中的委托方法上设置超时

RestKit 0.20.0 - 带有 JSON HTTP 正文请求的 getObjectsAtPath

RestKit 0.20.0 rc1 - 使用字符串数组创建请求帖子

Restkit如何将任意json(键可能会超时更改)映射到NSDictionary

nginx中的超时设置,请求超时响应等待超时等