8

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

任何人都可以帮助增加超时间隔。

谢谢

4

3 回答 3

6

子类 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];
}
于 2013-12-11T10:22:50.780 回答
5

RestKit 现在使用 AFNetworking 作为它的 HTTP 层,所以你需要在 Restkit 的 HTTPClient 中设置它。请参阅AFNetworking Github 上的此问题。此外,AFNetworking 的创建者 Matt 并不真正喜欢轻松打开超时属性的想法(请参阅他的原因here

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

于 2012-12-13T15:31:49.190 回答
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而不是目标 c中唯一的代码段):

RKObjectManager.sharedManager().registerRequestOperationClass(Timeoutable);
于 2015-08-01T14:11:31.747 回答