zoukankan      html  css  js  c++  java
  • IOS开发 网络发展史(NSURLProtocol)

    概念

    NSURLProtocol也是苹果众多黑魔法中的一种,使用它可以轻松地重定义整个URL Loading System。当你注册自定义NSURLProtocol后,就有机会对所有的请求进行统一的处理,基于这一点它可以让你:
    1.自定义请求和响应
    2.提供自定义的全局缓存支持
    3.重定向网络请求
    4.提供HTTP Mocking (方便前期测试)
    5.其他一些全局的网络请求修改需求

    拦截网路请求

    子类化NSURLProtocol并注册
    
    @interface CustomURLProtocol : NSURLProtocol
    @end
    然后在application:didFinishLaunchingWithOptions:方法中注册该CustomURLProtocol,一旦注册完毕后,它就有机会来处理所有交付给URL Loading system的网络请求。
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        //注册protocol
        [NSURLProtocol registerClass:[CustomURLProtocol class]];
        return YES;
    }

    CaninitRequest

    + (BOOL)canInitWithRequest:(NSURLRequest *)request
    {
      //只处理http和https请求
        NSString *scheme = [[request URL] scheme];
        if ( ([scheme caseInsensitiveCompare:@"http"] == NSOrderedSame ||
         [scheme caseInsensitiveCompare:@"https"] == NSOrderedSame))
        {
            //看看是否已经处理过了,防止无限循环
            if ([NSURLProtocol propertyForKey:URLProtocolHandledKey inRequest:request]) {
                return NO;
            }
            
            return YES;
        }
        return NO;
    }
  • 相关阅读:
    常用英语1000句
    TXT EXPLORER
    窗体美化
    C++ Code_StatusBar
    C++ Code_Slider
    C++ Code_ScrollBar
    C++ Code_ImageList
    C++ Code_HotKey
    C++ Code_animateCtrl
    C++ CheckMenuItem
  • 原文地址:https://www.cnblogs.com/guchengfengyun/p/8171249.html
Copyright © 2011-2022 走看看