Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)
donc la il est coder en ajax?
En effet. Ce qui répond à ta première question ("est-il possible de récupérer ces valeurs pour les mettre dans des variables PHP ?") et prouve que l'affirmation de ton second post est fausse ("La solution AJAX n'est pas possible.") puisque si c'est ton serveur qui va consulter les API de tontchat.com ça fonctionne.

 

comment puis recupéré ton js?
Le Javascript est directement accessible dans la page, mais comme je l'ai dit il est très crade (aucune gestion des erreurs !). Il me semblait que la partie la plus "intéressante" serait la récupération des données

depuis tontchat.com, mais bon.... Cela dit, attention à ne pas brûler les étapes ! Es-tu sûr d'avoir compris en quoi consiste ce que je viens de t'expliquer et d'implémenter ? Es-tu sûr d'avoir compris comment tu allais pouvoir le réutiliser pour ton propre site ?

Posté(e)

Bien le bonsoir

 

 

J'ai a peu près compris mais si tu veut me donner plus de détails pas de souci c'est d'ailleurs ainsi qu'on apprend mieux les choses

 

tu dis que cela est crade ceci mais pas un problème je suis pas la pour juget qui que se soit e respect le travail de chacun lol

puis je pourrais me faire aider pour le nettoyer par un amis que reviens mercredi si je me trompe pas

 

je ne vois pas comment le récupéré depuis la page.

 

heu dessolé

 

 

 

Merci encore

 

cordialement

Posté(e)
je suis pas la pour juget qui que se soit e respect le travail de chacun lol
Euh, certes, mais quand je t'aurai dit que je n'ai testé ce code qu'avec Firefox et dans de bonnes conditions (le webservice est accessible et retourne toujours les résultats attendus) tu comprendras peut-être qu'en cas de pépin, quel qu'il soit (webservice non accessible ou qui retourne une erreur parce que les API de tontchat ne répondent pas, ou ont changé de format, ...) tu vas te retrouver avec un affichage étrange ou des erreurs plein la page !

Ce n'est pas un jugement "artistique" mais bel et bien technique qui me fait dire que ce code est crade. Ca, et le fait qu'il ait été créé en un seul jet et en quelques minutes...

 

je ne vois pas comment le récupéré depuis la page.
Une fois la page ouverte, fais afficher le source : tout est là !

Pour ceux que ça intéresse voici la partie qui gère l'affichage des résultats :

  <script type="text/javascript"> // <![CDATA[

   var timer = null;
   var request = null;
   var response = null;

   // EventHandler
   function majInfos() {
     if (request.readyState == 4) {
       if (request.status == 200) {
           var responseText = request.responseText;
           var responseXml = request.responseXML;
           if (typeof(responseXml) == "undefined") {
               document.getElementById("nbconn").firstChild.data = "?";
               document.getElementById("nbusers").firstChild.data = "?";
               document.getElementById("usernames").firstChild.data = "?";
               document.getElementById("message").firstChild.data = responseText;
           } else {
               document.getElementById("nbconn").firstChild.data = responseXml.getElementsByTagName("nbconn")[0].firstChild.data;
               document.getElementById("nbusers").firstChild.data = responseXml.getElementsByTagName("nbusers")[0].firstChild.data;
               document.getElementById("usernames").firstChild.data = responseXml.getElementsByTagName("usernames")[0].firstChild.data;
               document.getElementById("message").firstChild.data = " ";
           }
           try {
               document.getElementById("btnStop").disabled = "";
               document.getElementById("btnStop").value = "STOP !";
           } catch (e) {
           }
       } else {
         alert("Echec: " + request.statusText);
       }
       request = null;
     }
   }

   // Requête vers la page
   function load_url(url) {
     try {
       document.getElementById("btnStop").disabled = "disabled";
       document.getElementById("btnStop").value = "En cours...";
     } catch (e) {
     }
     // branch for native XMLHttpRequest object
     if (window.XMLHttpRequest) {
       request = new XMLHttpRequest();
       if (request) {
         request.onreadystatechange = majInfos;
         request.open("GET", url, true);
         request.send(null);
       } else {
         alert("oups...");
       }
     } else if (window.ActiveXObject) {
       request = new ActiveXObject("Microsoft.XMLHTTP");
       if (request) {
         request.onreadystatechange = majInfos;
         request.open("GET", url, true);
         request.send();
       }
     } else {
       alert("Error XMLHttpRequest absent.");
     }
   }

   function init() {
       load_url('tontchat_ws.jsp?type=xml');
       timer = setInterval("load_url('tontchat_ws.jsp?type=xml')", 5000);
   }

 // ]]>
 </script>

La fonction init() est appelée dans le onload du body (pour faire le chargement initial et lancer la répétition des mises à jour).

La fonction majInfos() récupère le contenu retourné par le webservice et le place dans les éléments de la page dont les id sont "nbconn", "nbusers" et "usernames". En cas de contenu non xml (i.e. responseXML est vide) le message retourné par le webservice est placé dans l'élément d'id "message".

Posté(e)

Bien le bonsoir

 

desolé peut etre erreur de ma pars mais

 

 

Bein j'ai fais afficher le code source de la page et coller dans le bloc note que j'ai renommer en tontchat.jsp

envoyer sur mon ftp mais quand je vais au lien sa m'affiche le code pas la page comme ton exemple

 

cordialement

Posté(e)

1) ma page est une JSP parce que c'est le langage dans lequel je l'ai programmée. Toi, ce que tu as récupéré, c'est le HTML que cette page génère.

2) ma page fait référence au webservice qui est hébergé sur ma machine. En transférant cette page sur un autre serveur l'AJAX ne pourra fonctionner que si le webservice est hébergé sur le même domaine, donc tu vas avoir besoin de créer ce webservice et tu vas devoir modifier l'URL qui est consultée (parce que, même raison que le premier point, je n'utilise pas le même langage de programmation que toi)

3) ton serveur est configuré pour du PHP, je peux fournir le code intégral de ces deux pages mais tu vas devoir les réécrire en PHP (ce qui n'est pas super compliqué puisque les mécanismes qui entrent en jeu n'utilisent aucune subtilité de programmation de Java ou des JSP)

 

Si tu veux, tu peux renommer cette page "tontchat.html" tu auras un affichage sans styles, mais ça ne fera pas pour autant afficher les nombres de présents sur ton chat.

 

Pour info, voici le code du webservice :

<%@page contentType="text/plain" language="java" pageEncoding="UTF-8"
       import="java.net.URL"
       import="java.io.File"
       import="java.io.InputStream"
       import="java.io.OutputStream"
       import="java.net.URL"
       import="java.net.HttpURLConnection" %><%!

private String getUrlContent(String strUrl) {
   URL url = null;
   String donneesXml = "";
   HttpURLConnection urlConnect = null;
   try {
       url = new URL(strUrl);
       urlConnect = (HttpURLConnection) url.openConnection();
       urlConnect.setRequestMethod("GET");
       // Verification de la bonne marche de la requête
       if (urlConnect.getResponseCode() == HttpURLConnection.HTTP_OK) {
           StringBuffer strbDonneesXml = new StringBuffer();
           InputStream fluxXml = urlConnect.getInputStream();
           if (fluxXml != null) {
             for (;
             {
               int data = fluxXml.read();
               if (data == -1)
                 break;
               else
                 strbDonneesXml.append((char) data);
             }
             fluxXml.close();
           }
           donneesXml = strbDonneesXml.toString();
       }
   } catch (Exception e) {
       donneesXml = e.toString() + e.getMessage() + e.getCause() + e.getStackTrace()[0].toString();
   } finally {
       try {
           if (urlConnect != null) {
               urlConnect.disconnect();
           }
       } catch (Exception e) {
           // Rien
       } finally {
           urlConnect = null;
           url = null;
       }
   }
   return donneesXml;
}

%><%

try {
   String rqGroup = request.getParameter("groupe");
   String rqType = request.getParameter("type");
   String rqData = request.getParameter("data");
   String group = (rqGroup != null && rqGroup.length() > 0)?rqGroup:"deGoer";
   String type = (rqData != null && rqData.length() > 0)?rqData:"";
   Boolean isTypeXML = (rqType != null && rqType.length() > 0 && rqType.equals("xml"));

   if (isTypeXML) {
       StringBuffer strbResponse = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?><reponse>");
       if (type.isEmpty() || type.equals("nbconn")) {
           String nbConn = getUrlContent("http://www.tontchat.com/api/connections.php?group=" + group);
           strbResponse.append("<nbconn>" + nbConn.substring(nbConn.indexOf('\'') + 1, nbConn.lastIndexOf('\'')) + "</nbconn>");
       }
       if (type.isEmpty() || type.equals("nbusers")) {
           String nbConn = getUrlContent("http://www.tontchat.com/api/logon_users.php?group=" + group);
           strbResponse.append("<nbusers>" + nbConn.substring(nbConn.indexOf('\'') + 1, nbConn.lastIndexOf('\'')) + "</nbusers>");
       }
       if (type.isEmpty() || type.equals("usernames")) {
           String nbConn = getUrlContent("http://www.tontchat.com/api/user_list.php?group=" + group);
           strbResponse.append("<usernames>" + nbConn.substring(nbConn.indexOf('\'') + 1, nbConn.lastIndexOf('\'')) + "</usernames>");
       }
       strbResponse.append("</reponse>");
       response.setContentType("text/xml");
       %><%= strbResponse.toString() %><%
   } else {
       if (type.isEmpty() || type.equals("nbconn")) {
           %><%= getUrlContent("http://www.tontchat.com/api/connections.php?group=" + group) %><%
       }
       if (type.isEmpty() || type.equals("nbusers")) {
           %><%= getUrlContent("http://www.tontchat.com/api/logon_users.php?group=" + group) %><%
       }
       if (type.isEmpty() || type.equals("usernames")) {
           %><%= getUrlContent("http://www.tontchat.com/api/user_list.php?group=" + group) %><%
       }
   }
} catch (Exception e) {
   %> Erreur : <%= e.toString() %> <%= e.getMessage() %> <%= e.getCause() %> <%= e.getStackTrace()[0].toString() %><%
}
%>

La méthode getUrlContent() que je déclare est équivalente à la fonction PHP file_get_contents() quand on lui passe une URL en paramètre.

Posté(e)

Bien rebonjour

 

donc si je la met en html cela me revoie des no found

 

 

 

3) ton serveur est configuré pour du PHP, je peux fournir le code intégral de ces deux pages mais tu vas devoir les réécrire en PHP (ce qui n'est pas super compliqué puisque les mécanismes qui entrent en jeu n'utilisent aucune subtilité de programmation de Java ou des JSP)

 

pas de souci je suis preneur

Posté(e)

Tu as tout ce qu'il te faut, déjà.

 

Pour t'aider un peu, voici une transposition en PHP du code du webservice (moins la gestion des erreurs) :

<?php
$group = (isset($_GET['groupe']))?$_GET['groupe']:'deGoer';
$data = (isset($_GET['data']))?$_GET['data']:'';
$isTypeXML = (isset($_GET['type']) && $_GET['type'] == 'xml');

if ($isTypeXML) {
   $strbResponse = '<?xml version="1.0" encoding="UTF-8"?><reponse>';
   if (empty($data) || $data == 'nbconn') {
       $nbConn = file_get_contents('http://www.tontchat.com/api/connections.php?group=' . $group);
       $strbResponse .= '<nbconn>' . substr($nbConn, strpos($nbConn, '\'') + 1, strrpos($nbConn, '\'') - strlen($nbConn)) . '</nbconn>';
   }
   if (empty($data) || $data == 'nbusers') {
       $nbUsers = file_get_contents('http://www.tontchat.com/api/logon_users.php?group=' . $group);
       $strbResponse .= '<nbusers>' . substr($nbUsers, strpos($nbUsers, '\'') + 1, strrpos($nbUsers, '\'') - strlen($nbUsers)) . '</nbusers>';
   }
   if (empty($data) || $data == 'usernames') {
       $usernames = file_get_contents('http://www.tontchat.com/api/user_list.php?group=' . $group);
       $strbResponse .= '<usernames>' . substr($usernames, strpos($usernames, '\'') + 1, strrpos($usernames, '\'') - strlen($usernames)) . '</usernames>';
   }
   $strbResponse .= '</reponse>';
   header('Content-type: text/xml');
   echo $strbResponse;
} else {
   if (empty($data) || $data == 'nbconn') {
       echo file_get_contents('http://www.tontchat.com/api/connections.php?group=' . $group);
   }
   if (empty($data) || $data == 'nbusers') {
       echo file_get_contents('http://www.tontchat.com/api/logon_users.php?group=' . $group);
   }
   if (empty($data) || $data == 'usernames') {
       echo file_get_contents('http://www.tontchat.com/api/user_list.php?group=' . $group);
   }
}
?>

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...