AlamoFire ne respecte pas le délai d'expiration de l'intervalle de
class APIClient {
var user = User()
let alamoFireManager : Alamofire.Manager?
let center = NSNotificationCenter.defaultCenter()
init(){
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.timeoutIntervalForRequest = 4 //seconds
configuration.timeoutIntervalForResource = 4
self.alamoFireManager = Alamofire.Manager(configuration: configuration)
}
func test(){
//This does not respect the 4 second time out. Why?
self.alamoFireManager!.request(.POST, CONSTANTS.APIEndpoint+"/test", parameters: parameters).responseJSON {
(req, res, json, error) in
if let json = self.handleAPIResponse(req, res: res, json_data: json, error: error){
}
}
}
- Définissez un point d'arrêt à la
test
fonction et imprimer leself.alamoFireManager!.session.configuration.timeoutIntervalForRequest
- Êtes-vous en supposant que la première fois que vous appelez la méthode test(), il doit avoir un 4 secondes de retard?
- Le délai est de la requête http, pas pour la méthode complète pour le test. Par exemple, le délai d'attente de la dose s'applique pas à votre handleAPIResponse appel.
- avez-vous été en mesure de résoudre ce problème?
- Qu'est-ce que l'utilisation de 'centre' objet que vous avez créé?
Vous devez vous connecter pour publier un commentaire.
Êtes-vous sûr que les 4 secondes, délai d'attente n'est pas appliquée? J'ai créé une expérience:
et la sortie de la console j'ai:
L'Url de mon exemple sont actuellement en panne, je vais essayer de les mettre en ligne. Vous pouvez utiliser l'url à partir de l'exemple de test. En définissant un nombre différent à la fin, vous pouvez modifier le délai d'attente (en secondes).
J'ai utilisé le cocoapods dernière version de Alamofire.
Alamofire.SessionManager
, etURLSessionConfiguration.default
Vous avez besoin de créer une variable globale pour le gestionnaire de requêtes:
Et après avoir configurer les paramètres personnalisés:
Voici la Swift 3.0 /Alamofire 4.0 code pour obtenir un alamofireManager qui a un délai d'attente de 5 secondes:
Je suppose que cela fonctionne pour vous, notez que vous devez déclarer instance de Alamofire.Gestionnaire de en dehors de la fonction, veuillez consulter ci-dessous le code
espère que cela vous aide
Utilisation
self.alamoFireManager!.request
dans la même fonction init , délai d'attente délai est seulement pour la demande de ne pas pour la fonction entière. peut-être cela peut vous aider.J'ai eu NSURLErrorDomain lorsque j'ai utilisé la méthode ci-dessus .
C'est mon code (swift 3.2/Alamofire 4.4)