2016-12-10 3 views
0

Ich benutze OHHTTPStubs, um HTTP-Anfragen zu stummeln, und ich versuche, SWHttpTrafficRecorder zu verwenden, um den von AFNetworking erzeugten Verkehr aufzuzeichnen. Aus irgendeinem Grund kann ich den Verkehrsrecorder nicht dazu bringen, den von meinem AFNetwork AFHTTPSessionManager erzeugten Verkehr aufzuzeichnen. Ich übergebe die Config und alles, aber es schafft nur keine Dateien oder erkennen, dass Web-Anfragen gemacht werden. Hier ist der Code für den Betrieb des Recorders:SWHttpTrafficRecorder AFNetworking 3.0-Kompatibilität

NSError *e; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *bpdDir = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"BPDTests"]; 

NSLog(@"setting up traffic recorder"); 

self.recorder = [SWHttpTrafficRecorder sharedRecorder]; 
__weak BPDKAPIClient_Tests *weakSelf = self; 

// This block determines the name that will be given to the file generated 
// by each http request 
self.recorder.fileNamingBlock = ^NSString*(NSURLRequest *request, NSURLResponse *response, NSString *defaultName) 
{ 
    NSString *name = [weakSelf fileNameForRequest:request]; 

    NSLog(@"new name: %@, default name: %@", name, defaultName); 

    return name; 
}; 

// This block determines if we will record the http request 
self.recorder.recordingTestBlock = ^BOOL(NSURLRequest *request) 
{ 
    NSString *path = [weakSelf filePathForRequest:request]; 

    NSLog(@"are we deciding to record?"); 

    (![[NSFileManager defaultManager] fileExistsAtPath:path]) ? NSLog(@"Yes") : NSLog(@"No"); 

    return ![[NSFileManager defaultManager] fileExistsAtPath:path]; 
}; 

// This line forces the singleton configuration to initialize it's session manager and by extension the session 
// configuration. This way we can actually pass in the configuration to the recorder 
__unused AFHTTPSessionManager *m = self.apiClient.apiClientConfig.httpSessionManager; 

NSLog(@"config passed in: %@", self.apiClient.apiClientConfig.httpSessionManagerConfiguration); 

[self.recorder startRecordingAtPath:bpdDir 
      forSessionConfiguration:self.apiClient.apiClientConfig.httpSessionManagerConfiguration 
           error:&e]; 

if (e) 
{ 
    NSLog(@"error recording: %@", e); 
} 

Weiß jemand, ob SWTrafficRecorder und AFNetworking 3.0 kompatibel sind? Wenn ja, warum sind meine Anforderungen nicht Recorder? Wenn nicht, welche andere Bibliothek kann ich verwenden, um http-Verkehr von AFNetwork aufzuzeichnen?

Antwort

0

Für alle, die neugierig sind, sind sie nicht kompatibel. Wenn Sie eine kompatible Version von SWHttpTrafficRecorder haben wollen, müssen Sie die NSURLSessionConfig wechseln. Ich habe mir die Freiheit genommen und hier ist eine Version des Pods mit Methode Swizzling implementiert: https://github.com/Amindv1/SWHttpTrafficRecorder