我有一个NSURLProtocol的子类, NSURLConnection效果很好。
[NSURLSession sharedSession]效果也很好。
但是,[NSURLSession sessionWithConfiguration:configuration]不起作用,
我打电话给[NSURLProtocol registerClass:NSURLProtocolSubclass.class];
错误是什么?
NSString * stringUrl = @"https://www.apple.com/";
NSURL * url = [NSURL URLWithString:stringUrl];
NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url];
urlRequest.HTTPMethod = @"GET";
NSURLSessionConfiguration * configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
configuration.timeoutIntervalForResource = 20.0;
//this can work, but I cann't edit.
//configuration.protocolClasses = @[NSURLProtocolSubclass.class];
//this can work.
NSURLSession * urlSession = [NSURLSession sharedSession];
//this not work.
//NSURLSession * urlSession = [NSURLSession sessionWithConfiguration:configuration];
//Task.
NSURLSessionDataTask * task = [urlSession dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPURLResponse * httpUrlResponse = (NSHTTPURLResponse *)response;
NSLog(@"---- session: %ld", (long)httpUrlResponse.statusCode);
}];
[task resume];
答案 0 :(得分:4)
WebDriverWait
方法使用NSURLConnection注册协议,并使用共享会话 。其他会话在创建会话时复制全局协议集IIRC,除非您提供自定义数组,在这种情况下它会复制该数组。
以太方式,如果您需要在应用程序运行时添加协议,我非常确定您每次都必须创建一个新会话,除非您使用共享会话。