IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dynamique Discussion :

[AS2] [OpenAMF] Flash remoting - Error oppening URL


Sujet :

Dynamique

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut [AS2] [OpenAMF] Flash remoting - Error oppening URL
    Bonjour,

    si le service est introuvable ou l'url est incorrecte, un message est affiché en trace...

    par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var helloService:Service = new Service("http://localhost:8080/helloworld/gateway",null,"com.votrepseudo.remotehello.HelloService",null,null);
     
    	var pc:PendingCall = helloService.helloWorld();
    	pc.responder = new RelayResponder(this,"onHelloOk","onHelloError");
    si http://localhost:8080/helloworld/gateway n'existe pas, une trace s'affiche :
    "Error oppening URL"...

    est-il possible de traiter cette erreur ?

    pourquoi RelayResponder n'appelle pas la méthode onHelloError ?


    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    personne ne peut m'aider ?


    apparemment, dans ce cas la,
    on entre ni dans la fonction onHelloOk, ni dans onHelloError !

    une des solutions serait de mettre un timer juste avant l'appel du service, et arréter le timer lorsque l'on entre dans onHelloOk ou onHelloError...

    si le timer dépasse un certain délai, on peut supposer qu'on est dans le cas "Error oppening URL" ....


    je n'aime pas du tout cette solution, c'est pas optimimale, ca fait trop tiré par les cheveux

    si quelqu'un est plus inspiré, je suis preneur !

  3. #3
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello

    Dans flash remoting dans flash pour capter une erreur de type HTML il faut utiliser une technique "secrête" lol et surtout non documentée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    _global.System.onStatus = function (ev) {
        if (ev.level == "error") {
             trace ("voilà une erreur de serveur !") ;
        }
    }
    A noter que tu peux utiliser mon package eka.remoting si tu veux pour gérer tes connexions remoting J'ai encapsulé ce genre d'événement avec une gestion événementielle assez simple :
    - http://wiki.media-box.net/classes#package_eka
    - http://wiki.media-box.net/classes/flash/eka/remoting

    EKA+

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    je ne comprends pas trop ...

    j'ai ajouté ce code dans ma classe main...

    malheureusement, si le serveur est arreté, donc le service introuvable, j'ai toujours une trace : "Error oppening URL"

    et en plus on entre pas dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    _global.System.onStatus = function (ev) {
        if (ev.level == "error") {
             trace ("voilà une erreur de serveur !") ;
        }
    }

  5. #5
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Cela marche avec AMFPHP .. avec un script JAVA j'ai pas testé par contre
    Par contre tu me parles d'une classe main ? tu utilises MTASC pour faire ton flash ?
    Tu peux préciser ? merci

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    j'edite mes classes as à partir d'éclipse, puis je compile à partir de flash 8

    que ce soit du php ou du java... peux importe, vu que le service (ou l'url ) est introuvable !

  7. #7
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Tiens... moi aussi cela marche plus ?
    Pourtant :
    - http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&file=00001755.html
    On dirait qu'il y a des problèmes selon le flashplayer et selon le navigateur (donc le player aussi...) faudrait voir si il y a un truc à débloquer au niveau du player 8 ?

    Je vais chercher car là c'est un truc important tout de même !

    EKA+

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    je suis désolé pour toi,
    mais je suis quand meme rassuré que ca ne marche pas non plus chez toi...

    si tu comprends pourquoi, dis-le moi rapidement

    merci d'avance

  9. #9
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Le pire c'est que cela marchait avant... donc il doit y avoir un truc niveau sécurité ou au niveau du flashplayer.. faudrait voir si macromedia à fait une technote là dessus ?
    EKA+

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    j'espere que tu vas trouver la solution,
    car moi j'y ai depuis beaucoup beaucoup trop de tps dessus,

    je ne suis plus trop inspiré.....

    ca me desespere
    lol

  11. #11
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    En attendant .. pour contourner ce problème tu peux créer un setInterval de quelques secondes (10 secondes maxi par exemple) et si la connexion ne se fait pas avant se temps limite tu renvois une erreur, tu arrête le setInterval et hop le tour est joué
    EKA+

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    oui, j'ai deja implémenter cette solution,
    mais sans vouloir te vexer...
    c'est nul


    je preferai programmer proprement,
    et donc détecter si y'a une erreur de connexion et la traiter

  13. #13
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    C'est nul.. peu être pour toi mais en attendant il y a pas mieux hein ! Car je cherche et pour le moment c'est cencé fonctionné et cela fonctionne pas

    Maintenant à toi de voir si tu considère que c'est "si nul que cela" ou si il vaut mieux mettre un message d'erreur en cas de doute tout de même

    EKA+

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    oulala, je ne voulais pas te vexer....

    j'ai la perfection, d'ou ma remarque...

    quand je dis que c'est nul, c'est pour les raisons suivantes :
    - tu mets quel delai dans le timer :

    si le client à une connexion de merde, comment tu gere cela


    si tu mets un delai tres important, tu perds en optimisation (pour ceux qui ont un connexion rapide)

    tu comprends maintenant mon souci !!!

  15. #15
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Je suis pas vexé lol juste que quand on peut pas .. on peut pas...
    En général si le client à un serveur qui met 10 secondes pour récupérer les données sur le serveur .. c'est qu'il y a un problème
    Mais bon on est d'accord sur le fait qu'il y a un problème qui doit avoir une solution.. je sais pas encore laquelle

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    lol

    pas d'pb alors...

    bon courrage

  17. #17
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Bon en fait... le System.onStatus renvoi une erreur si il n'y a pas d'url dispo .. en gros si tu tapes un gatewayUrl du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gatewayUrl = "" ; // pas de serveur à cette adresse
    Maintenant si on cible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gatewayUrl = "http://www.google.fr" ;
    C'est là où l'on a une erreur interne dans flash mais pas de notification !
    Faudrait donc voir si on peut intercepter les erreurs j'ai pas vu comment faire pour le moment ?
    EKA+

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    tu veux dire qu'il reconnait l'erreur si la méthode est incorrecte,
    mais pas si l'url est incorrecte ?

  19. #19
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    J'ai trouvé une solution ! Mais c'est simple et fallait juste y penser lol

    On peut utiliser la classe LoadVars !
    Dans Flash 8, il est sorti un nouvel événement sur les classes XML et LoadVars : "onHTTPStatus"
    Cet événement est invoqué avant l'événement onData et donc avant l'événement onLoad !

    Du coup on peut rapidement récupérer pour l'url du gatewayUrl si le serveur est opérationnel ou pas.
    J'ai pas encore testé en ligne dans tous les navigateur si cela fonctionne par contre. Je vais tester cela aprés avoir répondu sur le forum

    Du coup en tapant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    var loader:LoadVars = new LoadVars;
    loader.onHTTPStatus = function(httpStatus:Number) {
         this.httpStatus = httpStatus;
         if(httpStatus < 100) {
              this.httpStatusType = "flashError";
         }
         else if(httpStatus < 200) {
              this.httpStatusType = "informational";
         }
         else if(httpStatus < 300) {
              this.httpStatusType = "successful";
              // ici je lance mon service remoting !!!!     
         }
         else if(httpStatus < 400) {
              this.httpStatusType = "redirection";
         }
         else if(httpStatus < 500) {
              this.httpStatusType = "clientError";
         }
         else if(httpStatus < 600) {
              this.httpStatusType = "serverError";
         }
     	trace ("httpStatus :: " + httpStatus + " : " + this.httpStatusType) ;
    }
    loader.onLoad  = function (success) {
    	trace ("success >> " + success) ;
    }
     
    loader.load(gatewayUrl) ;
    Bon donc par exemple si le script php ou autre sur le serveur n'existe pas... on a en retour le numéro d'erreur serveur.. exemple erreur 404 pour une page inconnu !
    Error opening URL "http://localhost/unknow"
    httpStatus :: 404 : clientError
    success >> false
    Bon je teste cela maintenant plus concrêtement et normalement c'est bon
    EKA+

  20. #20
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    A première vue cela marche sur ie mais pas sur firefox etc.... uniquement sur IE (sur pc !)
    Faut trouver autre chose ^_^

Discussions similaires

  1. Utilisations de flash remoting et com servers
    Par bolo dans le forum Flash
    Réponses: 8
    Dernier message: 11/07/2006, 11h04
  2. [FLASH 8] Composants Flash Remoting pour Flash 8
    Par abenhass dans le forum Flash
    Réponses: 1
    Dernier message: 15/12/2005, 13h22
  3. [FLASH MX] Variable dans URL
    Par assouline dans le forum Flash
    Réponses: 1
    Dernier message: 07/09/2005, 03h05
  4. [FLASH MX2004] Créer lien url sur bouton
    Par coconut1 dans le forum Flash
    Réponses: 4
    Dernier message: 24/05/2005, 12h08
  5. [Flash MX 2004]get URL
    Par ob1knob dans le forum Flash
    Réponses: 5
    Dernier message: 28/04/2004, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo