2012-12-13 9 views

Antwort

5

RestKit verwenden jetzt AFNetworking es HTTP-Schicht ist, so dass Sie es in der Httpclient von Restkit einstellen müssen. See this Issue auf AFNetworking Github. Auch Matt, der Schöpfer von AFNetworking, mag die Idee, eine Timeout-Eigenschaft zu öffnen, nicht wirklich (see his reason here)

Ich hoffe, das kann Ihnen einige Einblicke geben!

+0

Es scheint nicht ein Weg, um das Timeout zu setzen in der RestKit 2.0 HTTPClient. –

5

Subclass RKHTTPRequestOperation und implementieren Methode

- (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]; 
} 
+0

Funktioniert nicht für mich. RestKit0.26.0 Ich werde diesen Ansatz http://stackoverflow.com/a/16885658/3389683 versuchen –

2

Code Complete

aufwändigere/beschreibend zu sein, mein Code wie folgt:

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 

Dann ist (und das ist das der Teil, der mir geholfen, zu wissen, dass nicht in anderen Antworten erwähnt), registrieren Sie Klasse mit RKObjectManager.

Wie so (meine Unbeständigkeit Verzeihen, das ist mein einziges Codesegment in schnellen nicht Ziel c):

RKObjectManager.sharedManager().registerRequestOperationClass(Timeoutable);