Ich überschreiben NSURLProtocol und müssen HTTP-Antwort mit bestimmten StatusCode zurückgeben. NSHTTPURLResponse hat nicht status Setter, also versuchte ich es außer Kraft zu setzen mit:So setzen Sie statusCode in NSURLResponse
@interface MyHTTPURLResponse : NSHTTPURLResponse {}
@implementation MyHTTPURLResponse
- (NSInteger)statusCode {
return 200; //stub code
}
@end
überschreiben startLoading Methode von NSURLProtocol sieht wie folgt aus:
-(void)startLoading
{
NSString *url = [[[self request] URL] absoluteString];
if([url isEqualToString:SPECIFIC_URL]){
MyURLResponse *response = [[MyURLResponse alloc] initWithURL:[NSURL URLWithString:@"http://fakeUrl"]
MIMEType:@"text/plain"
expectedContentLength:0 textEncodingName:nil];
[[self client] URLProtocol:self
didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[[self client] URLProtocol:self didLoadData:[@"Fake response string"
dataUsingEncoding:NSASCIIStringEncoding]];
[[self client] URLProtocolDidFinishLoading:self];
[response release];
}
else{
[NSURLConnection connectionWithRequest:[self request] delegate:self];
}
}
Aber dieser Ansatz funktioniert nicht, die Antwort in NSURLProtocol erstellt ist immer mit statusCode = 0 auf der Webseite. Zur gleichen Zeit haben Antworten, die von NSURLConnection aus dem Netzwerk zurückgegeben werden, normale erwartete StatusCodes.
Kann mir bitte jemand helfen mit Ideen, wie statusCode explizit für erstellte NSURLResponse setzen? Danke.
Haben Sie eine Lösung für dieses Problem gefunden? – TomSwift