• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: What's the best way to run an NSURLProtocol session?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What's the best way to run an NSURLProtocol session?


  • Subject: Re: What's the best way to run an NSURLProtocol session?
  • From: Daryle Walker <email@hidden>
  • Date: Mon, 20 Oct 2014 18:57:22 -0400

On Oct 20, 2014, at 6:47 PM, Daryle Walker <email@hidden> wrote:

> Over the weekend, I read the Programming Guide corresponding to NSThread. I just used one of the -performSelector: APIs. Easier than I anticipated, except for the fact the code isn’t working right now. (That’s on the general Cocoa list. Should I ask here too?)

Here’s a copy of that post, called “Can't get first try of NSURLProtocol subclass to work.”:

> I entered a URL that triggers my handler, but I get this from the Xcode debug log:
>
>> 2014-10-20 07:42:08.968 MyApp[94134:303] *** Assertion failure in -[NSWindow setTitle:], /SourceCache/AppKit/AppKit-1265.21/AppKit.subproj/NSWindow.m:2901
>> 2014-10-20 07:42:08.972 MyApp[94134:303] *** WebKit discarded an uncaught exception in the webView:didFinishLoadForFrame: delegate: <NSInternalInconsistencyException> Invalid parameter not satisfying: aString != nil
>
> Here’s my -startLoading method. I tried “about:”, which is the only URL I handle directly in the method.
>
>> - (void)startLoading {
>>    NSAssert([self.class canInitWithRequest:self.request], @"Inappropriate request.");
>>    NSAssert(!self.processing, @"Receiving new protocol request while processing another.");
>>
>>    // Handle the blank "about:" URL.
>>    NSString * const  path = self.request.URL.path;
>>    NSString * const  query = self.request.URL.query;
>>
>>    if (!path || [path isEqualToString:@""]) {
>>        if (query) goto error;
>>        NSStringEncoding const  encoding = NSUTF8StringEncoding;
>>        NSData * const         aboutData = [@"<html><head><title>about</title></head><body>about:</body></html>" dataUsingEncoding:encoding];
>>
>>        [self.client URLProtocol:self didReceiveResponse:[[NSURLResponse alloc] initWithURL:self.request.URL MIMEType:@"text/html" expectedContentLength:aboutData.length textEncodingName:nil/*(__bridge_transfer NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(encoding))*/] cacheStoragePolicy:NSURLCacheStorageNotAllowed];
>>        [self.client URLProtocol:self didLoadData:aboutData];
>>        [self.client URLProtocolDidFinishLoading:self];
>>    } else {
>>        NSString * const  handler = AboutKeyToSelectorMap()[path];
>>
>>        if (handler) {
>>            self.processing = [NSThread currentThread];
>>            self.cancelled = NO;
>>            [self performSelector:NSSelectorFromString(handler) withObject:query afterDelay:0.0 inModes:@[[NSRunLoop currentRunLoop].currentMode, NSDefaultRunLoopMode]];
>>        } else {
>>            goto error;
>>        }
>>    }
>>    return;
>>
>> error:
>>    // Bad response.
>>    [self.client URLProtocol:self didFailWithError:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorResourceUnavailable userInfo:nil]];
>> }
>
> I thought using “nil” instead of the big expression calculating the encoding string would make a difference. It didn’t.

—
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: What's the best way to run an NSURLProtocol session?
      • From: "Quinn \"The Eskimo!\"" <email@hidden>
References: 
 >What's the best way to run an NSURLProtocol session? (From: Daryle Walker <email@hidden>)
 >Re: What's the best way to run an NSURLProtocol session? (From: "Quinn \"The Eskimo!\"" <email@hidden>)
 >Re: What's the best way to run an NSURLProtocol session? (From: Daryle Walker <email@hidden>)
 >Re: What's the best way to run an NSURLProtocol session? (From: "Quinn \"The Eskimo!\"" <email@hidden>)
 >Re: What's the best way to run an NSURLProtocol session? (From: Daryle Walker <email@hidden>)

  • Prev by Date: Re: What's the best way to run an NSURLProtocol session?
  • Next by Date: Re: What's the best way to run an NSURLProtocol session?
  • Previous by thread: Re: What's the best way to run an NSURLProtocol session?
  • Next by thread: Re: What's the best way to run an NSURLProtocol session?
  • Index(es):
    • Date
    • Thread