Ich habe eine benutzerdefinierte NSURLProtocol-Klasse, um Testdaten während des Experimentierens mit Alamofire bereitzustellen. Bei Anfragen über die Manager-Anforderungsmethode wird sie jedoch nicht verwendet .Die canInitWithRequest-Methode in der benutzerdefinierten NSURLProtocol-Klasse wird nicht ausgelöst, wenn Alamofire verwendet wird
Dieser Antrag geht durch und gibt ein Ergebnis ganz gut, aber nicht auslösen canInitWithRequest:
NSURLProtocol.registerClass(DBDummyURLProtocol)
class MyURLRequestConvertible : URLRequestConvertible {
var URLRequest: NSURLRequest {
return NSURLRequest(URL: NSURL(scheme: "http", host: "cnn.com", path: "/")!)
}
}
var myURLRequestConvertible = MyURLRequestConvertible();
Manager.sharedInstance.request(myURLRequestConvertible)
Wenn ich eine einfache NSURLConnection verwenden, wird die canInitWithRequest Methode aufgerufen, wie ich erwartet hatte:
NSURLProtocol.registerClass(DBDummyURLProtocol)
var request = NSURLRequest(URL: NSURL(scheme: "http", host: "cnn.com", path: "/")!)
NSURLConnection(request: request, delegate:nil, startImmediately:true)
Mache ich etwas falsch? Sollte das mit Alamofire funktionieren?
Worth klarstellt, dass 'NSURLSession.shared' absolut Protokoll-Klassen nicht respektiert registriert mit' register (_ :) ' Sitzungen, die mit Initialisierungsmethoden (dh nicht mit der gemeinsamen Sitzung) erstellt wurden, funktionieren jedoch nicht. Letzteres ist, was Alamofire verwendet, und deshalb ignoriert es 'registerClass (_ :)'. – paulvs