Это canInitWithRequest
в NSURLProtocol
:
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
// only handle http requests we haven't marked with our header.
if ([[[request URL] scheme] isEqualToString:@"http"] &&
([request valueForHTTPHeaderField:RNCachingURLHeader] == nil)) {
return YES;
}
return NO;
}
Но я хочу, чтобы NSURLProtocol
также разрешал запросы https.
Я пробовал это, но все запросы терпят неудачу при вызове:
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
// only handle http requests we haven't marked with our header.
if (([[[request URL] scheme] isEqualToString:@"http"] || [[[request URL] scheme] isEqualToString:@"https"]) &&
([request valueForHTTPHeaderField:RNCachingURLHeader] == nil)) {
return YES;
}
return NO;
}
Одним из примеров является запрос на вход со схемой https. В приведенной выше функции возвращается YES, но когда вызывается запрос на вход, я получаю эту ошибку в журнале:
Error Domain=NSURLErrorDomain Code=-1004 «Не удалось подключиться к серверу».
Однако, если я удалю проверку https в canInitWithRequest
, я не получу ошибки.
Я использую RNCachingURLProtocol для кэширования запросов.
Как этого добиться.
if
является ЛОЖНЫМ. Я попробовал ваш код, и он прошел оба тестаisEqualToString:
, но у меня нет значенияRNCachingURLHeader
для проверки. - person Larme   schedule 13.02.2015canInitWithRequest:
ведут себя так же, как и http-запросы. ВcanInitWithRequest:
: журналы[[request URL] scheme]
и[request valueForHTTPHeaderField:RNCachingURLHeader]
. Кроме того, проверьте, может ли быть проблема с учетом регистра (ваше сравнение сlowercase
scheme
). - person Larme   schedule 13.02.2015