NSURLProtocol registerClass:與NSURLSessionConfiguration.protocolClasses區(qū)別

參考文章:
URLProtocol 注冊方式的細(xì)節(jié)問題
NSURLProtocol的基本使用

NSURLProtocol registerClass:

    NSURLSession *session = [NSURLSession sharedSession];
    [[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSLog(@"data.length:%ld",data.length);
    }] resume];

[NSURLSession sharedSession]會按照NSURLProtocol registerClass:注冊的類遍歷,后注冊的先遍歷.(只有一個可以接受響應(yīng))

NSURLSessionConfiguration.protocolClasses

    NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
    config.protocolClasses = @[[WYTURLProtocol class]];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:config];
    [[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSLog(@"data.length:%ld",data.length);
    }] resume];

[NSURLSessionConfiguration defaultSessionConfiguration]創(chuàng)建的config不受NSURLProtocol registerClass:注冊的影響,需要配置config.protocolClasses

支持后臺下載的session,不支持配置WYTURLProtocol

NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"NSURLProtocol_Test"];
    // Custom NSURLProtocol subclasses are not available to background sessions.
    // 支持后臺下載的session,不支持配置WYTURLProtocol,設(shè)置protocolClasses不會生效
    config.protocolClasses = @[[WYTURLProtocol class]];

HTTPBody丟失問題

據(jù)蘋果官方說明,因?yàn)檎埱髤?shù)可能會很大,為了保證性能,請求參數(shù)是沒有被攔截掉的,就是post的HTTPBody是沒有的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容