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

Langage PHP Discussion :

Android/Java vers Php


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 96
    Points
    96
    Par défaut Android/Java vers Php
    Bonjour,

    avant de faire ma demande, je préfère prévenir que je ne connais pas grand chose en php...normalement c'est un collègue qui s'en occupe mais il est en vacance lorsque j'en ai besoin...

    Bref, je développe une application Android avec pas mal de fonctions multimédia notamment lecture de "webradios".
    Tout fonctionne sauf que les url des radio players sont dans l'apk...du coup lorsque un lien est mort (les webradio changent régulièrement d'adresse..déjà 3 changements en à peine un mois), je dois mettre à jour l'apk, on pourrait presque dire une mise à jour inutile pour les utilisateurs.

    Mon idée serait de faire une page php qui me renverrai les url. Lorsqu'un lien est mort j'ai juste à changer la page.
    Je n'ai pas de soucis pour aller me connecter à une page php, le problème est que je ne sais pas quoi mettre sur cette page !

    Ce que j'envoie de java vers php est une variable NameValuePair
    ex : si l'utliisateur requiert "NRJ" -> j'ai un pair "radio", "NRJ"
    pour europe1 -> "radio","EUROPE1"
    etc...

    J'ai voulu chercher un peu et j'en suis arrivé à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       <?php $data=$_POST["radio"];
        //manque un truc ici pour voir de quel radio il s'agit...
        echo urlRadio;
        //faire pareil pour l'ensemble des radios
        ?>
    Bon c'est sûrement un truc tout bête, je suppose, mais comme je l'ai dit j'y connais pas grand chose, si quelqu'un aurait l’amabilité de m'aider svp.

    Je vous remercie d'avance de vos réponse.

    Cordialement,
    Nicolas

  2. #2
    Invité
    Invité(e)
    Par défaut
    Yo,

    Je pense que le mieux et de faire une requête HTTP du terminal Android vers le serveur qui héberge le script PHP.
    Je ne sais pas comment on fait en Java.

    Ensuite dans ton script PHP, tu peux faire un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    switch ($_POST['NameValuePair']) {
        case "NRJ":
            header('Location: url-radio-nrj.truc'); // ligne que tu devras mettre à jour si lien mort.
            break;
        case "EUROPE1":
            header('Location: url-radio-europe1.truc'); // ligne que tu devras mettre à jour si lien mort.
            break;
    }
    ?>

  3. #3
    Invité
    Invité(e)
    Par défaut
    Enfin je crois que j'ai dit une bêtise.
    Ca risque de coincer au niveau du flux audio.

    Sinon tu peux mettre les liens dans un fichier xml hébergé sur un serveur que tu récupères dans ton application Android pour le parser.

    Dans l'ordre chronologique, ton application Android devrait un truc dans le genre :
    1 - Exécution de l'application
    2 - Téléchargement du fichier xml
    3 - Parsing du fichier xml
    4 - mise à jour des liens dans l'application Android
    5 - utilisation des webradios
    Dernière modification par Invité ; 30/07/2014 à 15h33.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    Merci pour cette réponse !
    En fait, e fais une requête http post qui traine avec elle une NameValuePair : ("radio",radio_name)
    Je fais juste une allé-retour sur la page. J'ai httpresponse qui est là pour me renvoyer ce que la page php a livré.

    J'ai juste besoin de l'url en string. Aucun besoin de flux ou je ne sais quoi. Les flux sont gérés avec mon MediaPlayer.
    En clair en java j'ai une fonction PlayRadio(String radio_name)

    Si je fais PlayRadio("NRJ)
    j'envoie une requête http post vers ma page, j'obtiens ma réponse avec httpresponse
    la réponse est envoyé au MediaPlayer dans lequel je "convertis" ce string reçu en Uri

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci de tenir compte de la réponse #3 à 15h16 :

    Enfin je crois que j'ai dit une bêtise.
    Ca risque de coincer au niveau du flux audio.

    Sinon tu peux mettre les liens dans un fichier xml hébergé sur un serveur que tu récupères dans ton application Android pour le parser.

    Dans l'ordre chronologique, ton application Android devrait faire un truc dans le genre :
    1 - Exécution de l'application
    2 - Téléchargement du fichier xml
    3 - Parsing du fichier xml
    4 - mise à jour des liens dans l'application Android
    5 - utilisation des webradios
    Avec la librairie CURL, non ?

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    oula c'est bien compliqué pour un string...XD ça n'existe pas en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    String url;
     
    if("NRJ")
        url = "url-nrj";
    else if("FG"
        url = "url-fg";
    //etc...
     
    return url;
    c'est étrange comme même que le return en php n'est pas été inventé oO

    un petit schéma plus explicatif :
    Nom : phpjava.png
Affichages : 93
Taille : 11,1 Ko

    EDIT avec un bout de java expliqué pour comprendre
    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
    31
    32
    33
    34
     
    public void postData(String radio_name) {
        // Create a new HttpClient and Post Header
         HttpClient httpclient = new DefaultHttpClient();
         HttpPost httppost = new HttpPost("http://www.URL.com/mypage.php");
     
        //This is the data to send
        String IWantThisRadio = radio_name;
     
         try {
             // Add your data
             List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
             nameValuePairs.add(new BasicNameValuePair("radio", IWantThisRadio));
     
             httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
     
            // Execute HTTP Post Request
     
             ResponseHandler<String> responseHandler = new BasicResponseHandler();
             String response = httpclient.execute(httppost, responseHandler);  //<----php doit me retourner mon url en String
     
           //This is the response from a php application
            String reverseString = response;
            Toast.makeText(this, "response" + reverseString, Toast.LENGTH_LONG).show();
     
        } catch (ClientProtocolException e) {
              Toast.makeText(this, "CPE response " + e.toString(), Toast.LENGTH_LONG).show();
         / / TODO Auto-generated catch block
         } catch (IOException e) {
               Toast.makeText(this, "IOE response " + e.toString(), Toast.LENGTH_LONG).show();
          // TODO Auto-generated catch block
        }
     
    }//end postData()
    Images attachées Images attachées  

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je ne connais pas le Java mais je pense que tu peux faire une requête une requête HTTP avec httppost
    Dans ta requête tu mets l'URL du script php

    Dans ton script PHP, tu écris un truc dans le genre :
    <?php
    switch ($_POST['NameValuePair']) {
    case "NRJ":
    echo "url-radio-nrj.truc";
    break;
    case "EUROPE1":
    echo "url-radio-europe1.truc";
    break;
    ...
    }
    ?>
    Et avec httpresponse, tu devrais pouvoir récupérer le résultat.

    Quand tu fais une requête HTTP (hypertext transfert protocole) vers le serveur web, ce dernier te répond.
    Il te renvoie du texte (html, css, xml...)
    Dernière modification par Invité ; 30/07/2014 à 16h33.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    ça n'existe pas en php :
    Si, encore heureux... c'est le code que t'a montré tomix, sauf qu'il a considéré (de manière avisée me semble-t-il) que pour gérer un nombre important de cas, un case est préférable, même si dans son exemple il n'y a que deux cas.

    c'est étrange comme même que le return en php n'est pas été inventé

    Heu... en dehors du fait que return existe bien en PHP, j'espère que tu ne crois pas que ça sert à envoyer des informations d'un langage à un autre ?

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    "Heu... en dehors du fait que return existe bien en PHP, j'espère que tu ne crois pas que ça sert à envoyer des informations d'un langage à un autre ? "

    en fait je ne demande pas que la page php m'envoie un "flux", pour faire simple ma requête arrive sur le script php, récupère la valeur et repart avec.

    A priori le dernier message de tomix concorde avec ce que j'ai pu lire sur le net donc ça doit être bon,
    merci !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("radio", IWantThisRadio));
     
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    c'est la paire que j'envoie. Du coup ici :
    switch ($_POST['NameValuePair'])

    je met switch ($_POST['radio']) ?

    Encore merci, pour le temps que vous m'avez accordé.

    EDIT ce que j'avais lu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    //code to reverse the string
     
    $reversed = strrev($_POST["action"]);
     
    echo $reversed;
     
    ?>
    A priori on récupére bien la réponse avec echo , c'était juste la parti au-dessus qui me dérangeait. (switch / case existe aussi en java -> j'ai mi "if" car je n'ai mis deux cas..mais sinon dans le code que j'ai il y en a une trentaine)

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    A la vue de ton code java , ton code php doit être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    switch($_POST['radio']) {
    	case 'NRJ':
    		echo 'http://nrj.com';
    		break;
    	case 'RFM':
    		echo 'http://rfm.com';
    		break;
    }
    Pour expliquer un peu. Quand en java tu fais nameValuePairs.add(new BasicNameValuePair("radio", IWantThisRadio)); , tu ajoutes un paramètre post du nom radio et de valeur IWantThisRadio. Comme PHP est pas trop mal foutu , y récupère tous les paramètres post dans la superglobale $_POST.

    Suffit donc juste de lire le dit paramètres et de faire un echo de ce que tu veux. Ce qui HTTPment parlant se traduit par un code 200 et la valeur du echo dans le body de ta requête.

    Si on veux faire les choses bien il faut tester les paramètres e trenvoye des codes HTTP d'erreur en cas de problème :

    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
    if(!empty($_POST))
    {
    	if(!empty($_POST['radio']))
    	{
    		switch()
    		{
    			case:
    				break;
    			case:
    				break;
    			default:
    				http_response_code(404);
    				break;
    		}
    	}
    	else
    	{
    		http_response_code(400);
    	}
    }
    else
    {
    	http_response_code(405); //Valable uniquement en PHP 5.4 et + voir avec header() pour version inférieur
    }
    c'est étrange comme même que le return en php n'est pas été inventé oO
    En java comme en PHP quand tu veux afficher une valeur tu fais pas un return mais un print (echo ici en php)
    Si tu veux absolument utiliser un return dans ton switch/case place le dans une fonction ou mieux , tu fais une classe RadioFinder

Discussions similaires

  1. JSON Java vers PHP
    Par rimas2009 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 16/12/2010, 17h00
  2. [XML] [HttpURLConnection] Code Java vers PHP
    Par Kaldyris dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 19/03/2010, 17h11
  3. Envoi de fichier java vers php
    Par legentil dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2007, 17h28
  4. un resultat JAVA ver PHP
    Par satelsat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/09/2007, 18h49
  5. Java vers Php
    Par deadstar62 dans le forum Services Web
    Réponses: 24
    Dernier message: 25/05/2007, 14h03

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