Ho una classe NSURLProtocol personalizzata per fornire dati di test mentre sto sperimentando con Alamofire, ma non sembra essere utilizzata quando si effettuano richieste tramite il metodo di richiesta di Manager .Il metodo canInitWithRequest nella classe NSURLProtocol personalizzata non viene attivato quando si utilizza Alamofire
Questa richiesta passa attraverso e restituisce un risultato più che bene, ma non attiva 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)
Se io uso un semplice NSURLConnection, il metodo canInitWithRequest si chiama come mi aspettavo:
NSURLProtocol.registerClass(DBDummyURLProtocol)
var request = NSURLRequest(URL: NSURL(scheme: "http", host: "cnn.com", path: "/")!)
NSURLConnection(request: request, delegate:nil, startImmediately:true)
Sto facendo qualcosa di sbagliato? Dovrebbe funzionare con Alamofire?
Vale la pena chiarire che 'NSURLSession.shared' non fa assolutamente rispettare le classi protocollo registrato usando' registerClass (_ :) ' tuttavia, le sessioni create utilizzando qualsiasi metodo di inizializzazione (cioè non la sessione condivisa) non lo fanno. Quest'ultimo è ciò che Alamofire utilizza, ed è per questo che ignora 'registerClass (_ :)'. – paulvs