【问题标题】:Restkit .20 request timeout intervalRestkit .20 请求超时间隔
【发布时间】:2013-06-02 17:21:21
【问题描述】:

尝试在 Restkit 上设置请求超时间隔。

这篇文章提到了 HTTClient,但 HTTPClient 似乎没有办法设置超时间隔。 Request timeout in restkit 0.20.0

有人知道如何设置间隔吗?

【问题讨论】:

    标签: ios objective-c timeout restkit


    【解决方案1】:

    无法直接访问它。您真的应该问为什么要设置自定义超时。

    如果您确实需要更改它,您应该继承RKObjectManager 并覆盖requestWithObject:。您的实现可以只调用 super 然后编辑生成的可变请求。

    【讨论】:

    • 我不在 Restkit 上使用 requestWithObject。我使用 [[RKObjectManager sharedManager] postObject.... requestWithObject 是否总是被称为 Restkit 的基础?意思是我的 postObject 调用最终是否使用 requestWithObject。设置超时的原因是 Heroku 资源在一段时间未使用时会进入睡眠状态。如果发生这种情况,我需要 Restkit 等待 Heroku 启动(20 秒)。
    • 是的,它会作为 postObject: 的结果被调用,因为它是由适当的ObjectRequestOperationWithObject: 调用的,几乎所有东西都会调用它。
    【解决方案2】:

    以下内容在 RestKit 0.20.3 中对我有用:我自己构建 NSMutableRequest 并为此请求设置超时。不幸的是,由于 AFNetworking 的政策不公开此属性,因此无法在 RestKit 0.20.x 中设置默认请求超时。

    NSMutableURLRequest *request = [objectManager requestWithObject:nil method:RKRequestMethodGET path:@"test.json" parameters:nil];
    
    [request setTimeoutInterval:300]; // set the timeout for this request to 5 minutes
    
    RKManagedObjectRequestOperation *op = [[RKObjectManager sharedManager] managedObjectRequestOperationWithRequest:request managedObjectContext:[[[RKObjectManager sharedManager] managedObjectStore] mainQueueManagedObjectContext] success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
        NSLog(@"Success, %d results loaded", [mappingResult count]);
    } failure:^(RKObjectRequestOperation *operation, NSError *error) {
        NSLog(@"Fail");
    }];
    
    [[RKObjectManager sharedManager] enqueueObjectRequestOperation:op];
    

    【讨论】:

    • @Wain 下面的评论是更好的答案,因为它将适用于 RestKit 的内置 *Object: 方法(即 getObject: postObject: 和 putObject:)。
    猜你喜欢
    • 2018-01-18
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多