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

Java Discussion :

Connexion inverse HTTP


Sujet :

Java

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut Connexion inverse HTTP
    Bonjour,

    Je développe actuellement une application client Airplay en suivant les protocoles sur cette page nto.github.io/AirPlay.html

    J'essaye de créer une "reverse connection" http mais impossible.
    J'envoie la commande qu'il faut, je reçois la bonne réponse, mon server http marche dans mon navigateur, MAIS je ne reçoit rien de la part du server Airplay de la freebox lorsqu'une photo de termine.

    quelqu'un a une idée ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ben déjà on va pas deviner ton code.

    Mais bon, c'est pas super-super courant comme protocole, je pense que pas grand-monde ne joue avec d'habitude. Es-tu sûr que la Freebox en est seulement capable ?
    J'ai une Freebox, est-ce que tu pourrais décrire grosso-merdo comment on essaie ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Ça fait beaucoup de ligne de code à poster.
    Si tu suis le lien que j'ai mis, tu peux voir que je demande une connection "reverse http". Le client se comporte comme un server et vice et versa. Cela permet la freebox d'envoyer des évènements au pc.

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut
    Il s'agit là clairement d'une technologie propriétaire de Apple, qui ne fonctionne certainement que sur Mac comme tout ce qu'il font, qui nécessite le protocole "Bonjour". Je crois que ce dernier peut être installé sur PC, mais je doute que la Freebox ne sache ce que c'est......

    Mais j'y penses, Freeplayer ne fait-il pas ce que vous voulez faire ???
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je reconnais que ça fait pas mal de code et que peut-être que ça pourrait se fendre d'un petit zip en attachement pour un cas pareil.
    Mais bon, après, 'faut savoir ce que tu veux, soit tu as besoin d'aide soit non.
    À part ça, vu qu'on va pas deviner ton algorithme, tu pourrais nous le décrire, qu'est-ce que tu fais dans quel ordre en réponse à quoi, sans syntaxe Java. C'est en plus, hein, pas l'un ou l'autre. C'est histoire qu'on sache ce que tu fais.

    Si tu veux pas me décrire comment je peux essayer rapidement de mon côté, fais-toi plaisir à attendre que quelqu'un d'autre vienne apprendre un protocole peu utile juste pour t'aider à l'implémenter -_-°.

    Le lien que tu as donné ne parle absolument pas de la notion de "photo qui se termine" et ce n'est pas franchement naturel comme concept. J'ignore donc totalement quel est l'event que tu voudrais recevoir et dans quel contexte tu espérais que ça arriverait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Voici un des endroits qui parle des events : http://nto.github.io/AirPlay.html#photos-events

    Le protocole bonjour n'est pas en cause. Il sert uniquement à repérer les appareils offrant tel ou tel service sur un réseau local. JmDNS implémente déjà cela, je repère la freebox qui offre le service airplay sur mon réseau local.

    Ensuite, toujours avec JmDNS, je demande des infos sur ce service (port, adresse, etc).
    Une fois le port et l'adresse récupéré, je peux faire des requète http spécifique à airplay. En effet, un serveur airplay n'est en fait qu'un serveur http avec quelques règles en plus.

    En suivant les instructions du lien, j'ai réussi sans difficulté à afficher une photo de mon pc sur la freebox (avec les classe URL et HttpURLConnection)
    J'implémente actuellement la possibilité d'un diaporama toujours en suivant cette page et pourquoi pas plus tard les vidéos.

    Mais comme je le dis plus tôt, airplay offre un system d'event en utilisant ce qui s'appelle le "reverse http" (plus d'info ici : http://reversehttp.net/).
    J'envoie donc la requete POST à la freebox, celle-ci me réponse affirmativement et devrait en toute logique m'envoyer à son tour des requetes GET et POST représentant des évèments.

    Malheureusement je ne reçois rien du tout. Voici les lignes de code que j'ai faite pour créer mon serveur http qui devrait traiter les requètes de la freebox. J'ai suivi les conseils de cette page : http://docs.oracle.com/javase/7/docs...e-summary.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    HttpServer server = HttpServer.create(new InetSocketAddress(7000),0);
       server.createContext("/event", new HttpHandler(){
           public void handle(HttpExchange t) throws IOException {
               System.out.println(t) //Juste pour voir si je reçoit quelque chose
           }
    });
       server.setExecutor(null); // creates a default executor
       server.start();
    Je précise enfin qu'avec ce code, si je tape "http://localhost:7000/event" dans mon navigateur, j'accède bien au serveur http sur mon pc.

    J'espère que cela vous a éclairé et que vous pourrez m'aider.

    Merci.

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par druzy Voir le message
    Malheureusement je ne reçois rien du tout.
    Alors, je m'y connais pas vraiment dans ce protocole, mais a priori la freebox ne va pas t'envoyer des évènements comme "il faut beau aujourd'hui." Tu risques de devoir attendre qu'il se passe quelque chose, avant qu'elle t'envoie quelque chose.

    Ensuite, je connais le principe du reverse HTTP, mais le lien donné n'est pas clair du tout dans le cas d'un slideshow. Il dit que le header de la requête de reverse HTTP doit être différent (donc quoi, c'est une autre requête de reverse ?)
    Et il dit que "3 connexions s'ouvrent en parallèle." Hum, qui fait ça, de quel côté ? A priori seul le client peut ouvrir de nouvelles connexions en parallèle, mais donc quoi, il faut faire quoi au juste ? 3 requêtes de reverse ? Et il faut en faire quoi après ?

    Bref c'est pas clair, et c'est pour ça que tu pourrais quand même te permettre de montrer ce que tu as essayé.

    Citation Envoyé par druzy Voir le message
    Voici les lignes de code que j'ai faite pour créer mon serveur http qui devrait traiter les requètes de la freebox. J'ai suivi les conseils de cette page : http://docs.oracle.com/javase/7/docs...e-summary.html
    Euh, voui, mais je croyais que tu voulais faire du reverse HTTP. Ça c'est du vanilla HTTP, un serveur qui ouvre une socket et qui attend des connexions de client dessus. Je vois mal pourquoi la Freebox irait s'y connecter spontanément.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Je ne connais pas ce protocole mais de ce que je comprends, tu envoies une requete à la freebox qui fait qu'elle doit notifier des evenements au PC. Ca pourrait donc etre un probleme de firewall/anti virus qui empeche la connexion. Ca vaut peut etre le coup d'essayer d'acceder au serveur depuis un autre PC du réseau pour voir si c'est pas ca...

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    ici : http://nto.github.io/AirPlay.html#se...airplayservice, il y a une partie qui explique le reverse http.
    D'après ce que ça dit, le serveur airplay doit envoyer une requete POST sur mon pc à /event

    J'ai créé un serveur pour recevoir ces requète car je ne peux pas avec une HttpURLConnection.

    Je suis sous ubuntu donc pas d'antivirus et j'ai désactivé mon firewall pour les tests.

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par druzy Voir le message
    ici : http://nto.github.io/AirPlay.html#se...airplayservice, il y a une partie qui explique le reverse http.
    D'après ce que ça dit, le serveur airplay doit envoyer une requete POST sur mon pc à /event
    Je suis sûr qu'en faisant un effort, tu aurais pu être encore plus vague et moins concret que ça. Tu as vraiment l'air de vouloir qu'on t'aide.
    Quel event ? C'est quoi ton algo ? C'est quoi ton code ?

    Citation Envoyé par druzy Voir le message
    J'ai créé un serveur pour recevoir ces requète car je ne peux pas avec une HttpURLConnection.
    Oui non mais tu peux pas non plus avec ça, hein. Tu es client, pas serveur. C'est reverse HTTP et puis c'est tout.

    Effectivement, je ne pense pas qu'on puisse faire du reverse HTTP avec HttpURLConnection. J'ai bien peur qu'il faille une Socket toute simple, et programmer toi-même l'échange HTTP.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Ça fait plaisir de voir que l'on est toujours aussi bien accueilli ici.

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    À ton service.

    Sinon, tu as l'intention de répondre un jour aux questions que je répète depuis le début, ou tu veux juste attendre dans l'espoir que quelqu'un vienne travailler à ta place plus que je ne le fais déjà ?

    Et ma suggestion d'utiliser les Socket, ça avance ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    J'ai posté tous les liens dont je me suis servi,
    j'ai posté le bout de code qui pouvait éventuellement poser problème.

    Je ne t'oblige pas à répondre à mes messages mais toutes les questions que tu m'as posée trouvent réponse dans le lien que j'ai donné dans mon premier post.

    Si tu es trop fainéant pour lire...

  14. #14
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par druzy Voir le message
    Je ne t'oblige pas à répondre à mes messages mais toutes les questions que tu m'as posée trouvent réponse dans le lien que j'ai donné dans mon premier post.

    Si tu es trop fainéant pour lire...
    Il ne faut pas oublier que ceux qui répondent à tes questions le font bénévolement, sur leur temps libre
    Donner un lien qui pointe sur un site en anglais de plusieurs dizaines d'écrans de hauteur n'est pas des plus explicite ni des plus concis pour cibler un problème ou répondre à une question.
    Ce fil de discussion semble tourner en rond : d'un côté tu es sûr d'avoir donné toutes les infos pour que des personnes bien intentionnées te viennent en aide et d'un autre côté les personnes désireuses de t'apporter de l'aide sont bloquées. C'est toi qui demande de l'aide, c'est donc à toi de faire des efforts pour te mettre à la portée de ceux désirant régler ton soucis

    Sinon, pour revenir au problème de départ, as-tu essayé de faire le programme le plus minimaliste possible reproduisant le problème ? Car c'est peut-être un problème dans l'enchainement de ton code, genre un "if" oublié au fin fond d'une méthode ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  15. #15
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Non, à force de le cuisiner il est devenu assez clair que son principal problème, c'est qu'il ne sait pas faire du reverse HTTP. Et 'faut reconnaître que ce n'est pas évident.
    Après, même si on avait ça en stock c'est pas pour autant qu'on saurait quoi faire pour recevoir des events, ni quoi faire des events. Encore derrière il y aura le problème de l'apple binary plist et je sens que ça va encore être épique. Mais le premier problème c'est qu'il n'y a pas de reverse HTTP.

    J'ai dit qu'en effet, à ma connaissance, Java ne propose rien pour ça et qu'il va falloir le faire avec des Socket pures et simples. Il existe peut-être des bibliothèques qui le font déjà, j'en ai pas trouvé.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. connexion persistante http 1.1
    Par supergg02 dans le forum Web & réseau
    Réponses: 0
    Dernier message: 03/12/2007, 00h32
  2. Connexion proxy HTTPS
    Par akrodev dans le forum Général Dotnet
    Réponses: 14
    Dernier message: 28/11/2007, 20h08
  3. [Débutant] Connexion en HTTPS via un Proxy ?
    Par ghohm dans le forum Web
    Réponses: 11
    Dernier message: 15/06/2007, 10h15
  4. Connexion avec HTTP HEADER
    Par breizhgen dans le forum Langage
    Réponses: 9
    Dernier message: 01/09/2006, 22h56
  5. Connexion serveur HTTP
    Par xwindoo dans le forum Développement
    Réponses: 4
    Dernier message: 24/08/2006, 18h40

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