Délai d’attente Ajax synchrone dans la visualisation Web

Lors de l’exécution d’une requête ajax synchrone (GET) à partir de javascript vers un site Web interdomaine à partir de l’affichage Web dans Andriod, la requête échoue. Le code est comme ci-dessous,

var jqxhr = $.ajax({ url: url, cache: false, dataType: 'json', type: 'GET', async: false }) .done(function ( data ) { fnSuccess(JSON.ssortingngify(data)); }); jqxhr.fail(function(jqXHR, textStatus, errorThrown) { alert("Failed with:"+textStatus+"--"+errorThrown+"--"+jqXHR.status+"--"+jqXHR.responseText); }); 

Le site Web est censé me renvoyer des données au format JSON et le temps de réponse moyen est d’environ 90 secondes. L’URL du site Web est du type https://abc.com/abc/123?a=1&b=2&c=3.

Le journal ci-dessous s’affiche lorsque la requête Ajax démarre (adb logcat), E / WebUrlLoaderClient (924): la requête synchrone a expiré au bout de 10 secondes pour le 0e essai, URL: https://abc.com/abc/123?a=1&b. = 2 & c = 3 E / WebUrlLoaderClient (924): la demande synchrone a expiré après 10 secondes pour le 1er essai, URL: … E / WebUrlLoaderClient (924): la demande synchrone a expiré après 10 secondes pour le deuxième essai, URL:. ..

Une fois la 3ème ligne enregistrée, la demande ajax change l’état de disponibilité à 4 et l’état de la réponse à 0 au lieu de 200 et le texte de la réponse est également nul. Cela signifie que le délai d’attente expire après 30 secondes (3 tentatives de 10 secondes chacune).

Je suis passé par le WebUrlLoaderClient.cpp à partir d’Android Open Source et j’ai constaté que le délai d’attente et le nombre de tentatives sont fixés à 10 et 3 respectivement.

Cette même demande fonctionne correctement en mode asynchrone.

Faites-moi savoir si je ne fais pas quelque chose de mal dans ce code ou s’il existe un autre moyen de faire un appel ajax synchrone pour lequel le temps de réponse est supérieur à 30 secondes.

Je crains que vous ne soyez pas en mesure de définir un délai d’attente personnalisé pour un appel ajax synchrone … vous devez passer en mode asynchrone et placer le suivant dans les appels .done et .fail ajax.

Voir ici: Connectez – vous pour Iphone mais pas avec Android .