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

API standards et tierces Android Discussion :

Problème d'envoi d'objets au serveur avec gson


Sujet :

API standards et tierces Android

  1. #1
    Membre du Club
    Homme Profil pro
    etuidiant
    Inscrit en
    Octobre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etuidiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 64
    Points : 50
    Points
    50
    Par défaut Problème d'envoi d'objets au serveur avec gson
    Salut tout le monde ça fait des heures que je cherche ou est l'erreur : j'envois un objet java en format json avec la librairie Gson à un script php mais le script n'a pas l'air de recevoir les données ... voici mon code :

    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
     
    	public static String syncAddTaskOnline(TaskAddress addr, long onlinePIID){
     
    		String donnees = "l'objet addr est null";
     
    		if (addr == null){
    			return donnees;
    		}
    		else{
     
    			String result = null;
    			InputStream is = null;
     
    			ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
     
    			Gson gson = new Gson();
     
    			// convert java object to JSON format,
    			// and returned as JSON formatted string
    			String jsonAdd = gson.toJson(addr);
     
    			System.out.println(jsonAdd);
     
    			nameValuePairs.add(new BasicNameValuePair("addr", jsonAdd));			
    			nameValuePairs.add(new BasicNameValuePair("onlinePIID", String.valueOf(onlinePIID)));
     
    			try {
    				HttpClient httpclient = new DefaultHttpClient();
    				HttpPost httppost = new HttpPost("http://192.168.1.13/spotnshare/syncAddressPIOnline.php");
    				httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    				HttpResponse response = httpclient.execute(httppost);
     
        ...
    mon System.out.println(jsonAdd); affiche ==> System.out(27192): {"address":"Avenue BLABLA 130,Woaint-Laert,1200,Belgique","postCode":0,"longitude":3.44838,"id":0,"latitude":40.8462,"number":0}

    il est donc bien sous le format json avant d'etre envoyé au serveur, niveau serveur j'ai :

    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
     
    <?php
     
    /* On verif qu'on a bien recu les 3 données */
    if( isset($_POST['addr']) && isset($_POST['onlinePIID'])) {
     
    	// on se connecte à notre base  pour recuperer les data
    	include("connexion_bdd.php");
     
    	if(connexionBDD() == 1){
     
    		$TaskAddress = $_POST['addr'];
     
    		$jAddress = json_decode($TaskAddress);
     
    		echo(json_encode(array("aaaaa" => $_POST['addr'])));
     
    		$address = $jAddress->address;
    		$lat = $jAddress->latitude; 
    		$long = $jAddress->longitude;
    j'ai placé un echo car je voyais a chaque fois cette erreur apparaitre : " Notice: Trying to get property of non-object in C:\wamp\www\spotnshare\syncAddressPIOnline.php on line <i>16</i>" ligne 17 et 18 aussi donc pour ==>
    $address = $jAddress->address;
    $lat = $jAddress->latitude;
    $long = $jAddress->longitude;

    et du coup dans mon echo je vois que mon objet est null dans mon logcat ==> [{"aaaaa":null] ...mais ce que je comprend vrmt pas c'est que j'ai utilisé exactement le meme code que pour un autre objet ou ca a parfaitement fonctionné :s ... ==>

    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
     
    	public static long syncTaskOnline(TaskReminder task){
    		String result = null;
    		InputStream is = null;
     
    		ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
     
    		Gson gson = new Gson();
     
    		// convert java object to JSON format,
    		// and returned as JSON formatted string
    		String jsonTask = gson.toJson(task);
     
    		nameValuePairs.add(new BasicNameValuePair("taskReminder", jsonTask));
     
     
    		long donnees = 0;
     
    		try {
    			HttpClient httpclient = new DefaultHttpClient();
    			HttpPost httppost = new HttpPost("http://192.168.1.13/spotnshare/syncTaskOnline.php");
     
            ...
    et la partie php de ce code qui fonctionne :

    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
     
    <?php
     
    <?php
     
    /* On verif qu'on a bien recu les 3 données */
    if( isset($_POST['taskReminder'])) {
     
    	// on se connecte à notre base  pour recuperer les data
    	include("connexion_bdd.php");
     
    	if(connexionBDD() == 1){
     
    		$TaskReminder = $_POST['taskReminder'];
     
    		$jTaskReminder = json_decode($TaskReminder);
     
    		$id = $jTaskReminder->id;
    		$localID = $jTaskReminder->localID; 
    		$userID = $jTaskReminder->userID;
    		$title = $jTaskReminder->title; 
    		$text = $jTaskReminder->text;
    		$dateTime = 0;
    		$dateTimeUp = 0;
     
               ...
    J'ai comparé mes codes je ne vois vrmt pas ou est l'erreur :S

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Bizarre si l'autre code marche et que c es le meme mais est ce qu'un echo de $_POST['taskReminder'] donne quelque chose ? pcq vu que c est un objet ca doit etre bizarre a afficher

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    En gros le hic est à cet endroit là :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nameValuePairs.add(new BasicNameValuePair("addr", jsonAdd));
    mais est ce que ton script récupère bien cette donnée là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nameValuePairs.add(new BasicNameValuePair("onlinePIID", String.valueOf(onlinePIID)));
    Ou bien est ce que ca aussi ca ne passe pas ?

  4. #4
    Membre du Club
    Homme Profil pro
    etuidiant
    Inscrit en
    Octobre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etuidiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par kracels Voir le message
    En gros le hic est à cet endroit là :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nameValuePairs.add(new BasicNameValuePair("addr", jsonAdd));
    mais est ce que ton script récupère bien cette donnée là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nameValuePairs.add(new BasicNameValuePair("onlinePIID", String.valueOf(onlinePIID)));
    Ou bien est ce que ca aussi ca ne passe pas ?
    Oui je récupère bien cette variable mais ce qui est plus complexe avec l'autre c est qu'il s agit d un objet :s une solution serait d'envoyer toute les variables de l'objet individuellement mais il doit etre possible d'envoyer tout d'un seul coup j'u suis déjà arrivé avec d'autres cas je ne comprend pas pourquoi ca ne fonctionne pas dans celui ci

Discussions similaires

  1. [XL-2007] Problème/code envoi mail avec serveur Microsoft Exchange
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/02/2013, 18h40
  2. [POO] Envoi d'objets au serveur
    Par olof dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/10/2008, 11h38
  3. Réponses: 0
    Dernier message: 29/11/2007, 12h28
  4. [IdTcpServer]Envoi d'objet ou record avec Stream
    Par davels dans le forum Web & réseau
    Réponses: 10
    Dernier message: 04/09/2007, 11h56
  5. Problème d'envoie de mail avec PHP sur le serveur Linux
    Par Nessma dans le forum Administration système
    Réponses: 0
    Dernier message: 03/09/2007, 16h06

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