2012-12-13 18 views

risposta

5

RestKit ora utilizzano AFNetworking per il suo livello di HTTP, quindi è necessario impostarla nel HTTPClient di Restkit. See this Issue su AFNetworking Github. Inoltre, Matt, il creatore di AFNetworking, non gradisce molto l'idea di aprire facilmente una proprietà di timeout (see his reason here)

Spero che questo possa darvi alcuni spunti!

+0

Ci non sembra essere un modo per impostare il timeout nel RestKit 2.0 HTTPClient. –

5

sottoclasse RKHTTPRequestOperation e implementare il metodo

- (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

Non funziona per me. RestKit0.26.0 Ho intenzione di provare questo approccio http://stackoverflow.com/a/16885658/3389683 –

2

completa Codice

Per essere più elaborata/descrittiva, il mio codice è stato il seguente:

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 

Poi (e questa è la parte che mi ha aiutato a sapere, che non è stato menzionato in altre risposte), si registra classe con RKObjectManager.

Come così (Perdonate la mia incoerenza, questo è il mio unico segmento di codice in swift non c obiettivo):

RKObjectManager.sharedManager().registerRequestOperationClass(Timeoutable); 
Problemi correlati