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

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

谁能帮忙增加超时间隔。

谢谢

【问题讨论】:

    标签: restkit


    【解决方案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];
    }
    

    【讨论】:

    【解决方案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);
    

    【讨论】:

    • 非常感谢,这救了我。
    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多