// Register NSURLProtocol to intercept requests[NSURLProtocol registerClass:[MSDKDnsHttpMessageTools class]];// URLs that require SNI, such as https://www.qq.comNSString *originalUrl = @"your url";NSURL *url = [NSURL URLWithString:originalUrl];NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];// NSURLConnection exampleself.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];[self.connection start];// NSURLSession exampleNSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];NSArray *protocolArray = @[ [MSDKDnsHttpMessageTools class] ];configuration.protocolClasses = protocolArray;NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:[NSOperationQueue mainQueue]];self.task = [session dataTaskWithRequest:request];[self.task resume];// AFNetworking exampleNSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];NSArray *protocolArray = @[[MSDKDnsHttpMessageTools class]];config.protocolClasses = protocolArray;AFHTTPSessionManager* sessionManager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config];sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];NSURLSessionDataTask* task = [sessionManager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) {NSLog(@"update upload progress %@", uploadProgress.description);} downloadProgress:^(NSProgress * _Nonnull downloadProgress) {NSLog(@"update download progress %@", downloadProgress.description);} completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {NSLog(@"request complete ==== response: %@ ===== error: %@", [NSString stringWithFormat:@"%@", responseObject], error);}];[task resume];
#pragma mark - SNI scenario, call only once, do not call multiple times/**Set the domain name list to intercept in the SNI scenarioRecommend using this API setting to only intercept domain names in the SNI scenario and avoid blocking domain names in other scenes@param hijackDomainArray Domain name list to intercept*/- (void) WGSetHijackDomainArray:(NSArray *)hijackDomainArray;/**Set the non-intercepted domain list in the SNI scenario@param noHijackDomainArray Non-intercepted domain list*/- (void) WGSetNoHijackDomainArray:(NSArray *)noHijackDomainArray;
Feedback