1. 程式人生 > >NSURLProtocol處理重定向時需要注意301和302狀態

NSURLProtocol處理重定向時需要注意301和302狀態

-(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response {
    if ([response isKindOfClass:[NSHTTPURLResponse class]])
    {
        NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
        if ([HTTPResponse statusCode] == 301 || [HTTPResponse statusCode] == 302)
        {
            NSMutableURLRequest *mutableRequest = [request mutableCopy];
            [mutableRequest setURL:[NSURL URLWithString:[[HTTPResponse allHeaderFields] objectForKey:@"Location"]]];
            request = [mutableRequest copy];
            [[self client] URLProtocol:self wasRedirectedToRequest:request redirectResponse:response];
        }
    }
    return request;
}