[Résolu] TimeOut sur un UnityWebRequest

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
rattle-snake
Messages : 187
Inscription : 23 Jan 2012 23:37

[Résolu] TimeOut sur un UnityWebRequest

Message par rattle-snake » 01 Avr 2017 11:26

Bonjours a tous, je suis en train de switcher sur UnityWebRequest pour gerer mes requetes http car je le trouve vraiment plus fiable que les www. Seulement je n'arrive pas a gerer un timeOut proprement. Voici ce que j'ai fais, mais l'envoi se termine quand même :

Code : Tout sélectionner

IEnumerator Upload()
{
    List<IMultipartFormSection> form = new List<IMultipartFormSection>();
    form.Add(new MultipartFormDataSection("myField","myData"));
   
    string URL = "myURL";

    using (UnityWebRequest WWWsendFormulaireWithAttachment = UnityWebRequest.Post(URL, form))
    {
        //yield return www.Send();
        www.Send();
        float elapsedTime = 0.0f;
        while (!www.isDone)
        {
            elapsedTime += Time.deltaTime;
            if (elapsedTime >= 0.1f) //Faible timeOut pour le test
            {
                gestionTimeOut(www);
                //www.Abort; //Error
                break;
            }
           
            yield return new WaitForEndOfFrame();
        }

        if (www.isError)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log("Form upload complete!");
        }
    }
}

public void gestionTimeOut(UnityWebRequest request)
{
    Debug.Log("Aborted");
    request.Abort();
}

/*
La console affiche : 
- "Aborted"
- "Form upload complete!"
*/
Des idées ? :roll:

Merci,
Seb
Dernière édition par rattle-snake le 03 Avr 2017 10:20, édité 1 fois.

Avatar de l’utilisateur
Drakulo
Messages : 113
Inscription : 10 Mars 2017 22:49
Contact :

Re: TimeOut sur un UnityWebRequest

Message par Drakulo » 01 Avr 2017 12:28

Hello.

Le soucis vient de ton log. A la fin de ton traitement, une fois le timeout déclenché, tu annules la requêtes. Elle n'est pas marquée comme étant en erreur, donc tu tombes dans le else. Essaie de changer ton code comme ça :

Code : Tout sélectionner

if (www.isError)
{
    Debug.Log(www.error);
}
else if(www.isDone)
{
    Debug.Log("Form upload complete!");
}
else
{
    Debug.Log("Timeout");
}
Fun Games Maker @TriplArt
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole

Avatar de l’utilisateur
rattle-snake
Messages : 187
Inscription : 23 Jan 2012 23:37

Re: TimeOut sur un UnityWebRequest

Message par rattle-snake » 01 Avr 2017 12:39

Hello Drakulo,

Ce qui est bizarre c'est que la doc dit :
Aborted UnityWebRequests are considered to have encountered a system error. The isError property will return true and the error property will be "User Aborted".
https://docs.unity3d.com/ScriptReferenc ... Abort.html

Du coup on devrait tomber dans une erreur.

Sinon cette méthode de timeOut t'as l'air "propre" ? Car je n'ai trouvé aucune référence avec les UnityWebRequests

Avatar de l’utilisateur
Drakulo
Messages : 113
Inscription : 10 Mars 2017 22:49
Contact :

Re: TimeOut sur un UnityWebRequest

Message par Drakulo » 01 Avr 2017 16:09

Hum effectivement, tu devrais avoir une erreur... :pasdrole:

Tu as essayé d'afficher le code d'erreur stocké dans "error" ? https://docs.unity3d.com/ScriptReferenc ... error.html

En théorie, tu devrais avoir "User Aborted" si l'appel est bien annulé en cours de route.
Fun Games Maker @TriplArt
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole

Avatar de l’utilisateur
rattle-snake
Messages : 187
Inscription : 23 Jan 2012 23:37

Re: TimeOut sur un UnityWebRequest

Message par rattle-snake » 01 Avr 2017 17:16

Le error ne m'affiche rien, puisqu'il considere l'upload comme reussi lol.

C'est du unity tout craché, il te donne une commande pour annuler un POST sans mettre de contexte, et quand tu le test tu te retrouve avec l'inverse de ce que la doc dit...

Avatar de l’utilisateur
rattle-snake
Messages : 187
Inscription : 23 Jan 2012 23:37

Re: TimeOut sur un UnityWebRequest

Message par rattle-snake » 03 Avr 2017 10:15

Je vais considérer le topic comme résolu.
En attendant que Unity se bouge.
Un dev rencontré sur un tchat m'a confirmé que malheureusement UnityWebRequest était encore archi buggé.

Répondre

Revenir vers « Scripting »