Bienvenue sur le forum de Phonandroid !

Enregistrer un utilasteur

Règles du forum Attention: ceci est la section développement. Tout sujet n'étant pas en rapport avec le développement d'applications, roms, thèmes et autres services en rapport avec Android sera supprimé sans préavis.

Enregistrer un utilasteur

Messagepar fokoa_j » Mer 11 Jan 2017 20:44

Salut, je suis entrain de faire une activité qui permettra a une personne de s'enregistrer.
Mais je n'y arrive pas ! et je ne sais vraiment pas pourquoi !
Voici ce que doit me renvoyer le json en cas de succès :
Code: Tout sélectionner
{
    "error": false,
    "uid": "55fa7220a2c187.50984590",
    "user": {
        "name": "fokoa",
        "email": "fokoai@gmail.com",
        "created_at": "2015-09-17 13:26:16",
        "updated_at": null
    }
}

et en cas d'échec ceci :
Code: Tout sélectionner
{
    "error": 1,
    "error_msg": "Unknown error occurred in registration!"
}

Code: Tout sélectionner
{
    "success": 0,
    "error": 2,
    "error_msg": "User already existed with fakai@gmail.com"
}

Voici ce que me donne les débogueur :
Code: Tout sélectionner
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err: org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.173.1 refused
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:236)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:167)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.client.DefaultRequestDirector.executeOriginal(DefaultRequestDirector.java:1312)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:702)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:694)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:516)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:494)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at com.ff.messenger.RegisterRequests$StoreUserDataAsyncTask.doInBackground(RegisterRequests.java:81)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at com.ff.messenger.RegisterRequests$StoreUserDataAsyncTask.doInBackground(RegisterRequests.java:44)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at java.lang.Thread.run(Thread.java:818)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err: Caused by: java.net.ConnectException: socket failed: EACCES (Permission denied)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:234)
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err:    ... 15 more
01-11 19:18:31.887 29778-30976/com.ff.messenger W/System.err: Caused by: java.net.SocketException: socket failed: EACCES (Permission denied)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:623)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at java.net.Socket.checkOpenAndCreate(Socket.java:687)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at java.net.Socket.connect(Socket.java:847)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:188)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:    ... 15 more
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err: Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at libcore.io.Posix.socket(Native Method)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:     at libcore.io.IoBridge.socket(IoBridge.java:608)
01-11 19:18:31.897 29778-30976/com.ff.messenger W/System.err:    ... 20 more

et voici le code qui traite la requête :
Code: Tout sélectionner
package com.ff.messenger;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.ArrayList;

/**
 * Created by Fokoa on 11/01/2017.
 */

class RegisterRequests {
    private ProgressDialog progressDialog;
    private static final int CONNECTION_TIMEOUT = 1000 * 15;
    private static final String SERVER_ADDRESS = "http://192.168.173.1/test/";
    private Context context;

    RegisterRequests(Context c) {
        context = c;
    }

    void storeUserDataInBackground(User user, GetUserCallback userCallback) {
        new StoreUserDataAsyncTask(user, userCallback).execute();
    }
[color=#FF0040]
    private class StoreUserDataAsyncTask extends AsyncTask<String,Void, String> { // RegisterRequests.java:44[/color]
        User user;
        GetUserCallback userCallback;

        StoreUserDataAsyncTask(User user, GetUserCallback userCallback) {
            this.user = user;
            this.userCallback = userCallback;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressDialog = new ProgressDialog(context);
            progressDialog.setCancelable(false);
            progressDialog.setTitle("Processing");
            progressDialog.setMessage("Please wait...");
            progressDialog.show();
        }

        @Override
        protected String doInBackground(String... params) {
            ArrayList<NameValuePair> data = new ArrayList<>();
            data.add(new BasicNameValuePair("username", user.getUsername()));
            data.add(new BasicNameValuePair("email", user.getEmail()));
            data.add(new BasicNameValuePair("phone", String.valueOf(user.getPhone())));
            data.add(new BasicNameValuePair("password", user.getPassword()));

            HttpParams httpParams = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParams, CONNECTION_TIMEOUT);
            HttpConnectionParams.setSoTimeout(httpParams, CONNECTION_TIMEOUT);

            HttpClient httpClient = new DefaultHttpClient(httpParams);
            HttpPost httpPost = new HttpPost(SERVER_ADDRESS + "register.php");

            String result = "";
            try {
                httpPost.setEntity(new UrlEncodedFormEntity(data));
               [color=#FF0000] HttpResponse httpResponse = httpClient.execute(httpPost); //RegisterRequests.java:81[/color]

                HttpEntity httpEntity = httpResponse.getEntity();
                result = EntityUtils.toString(httpEntity);
                JSONObject jsonObject = new JSONObject(result);
                boolean error = jsonObject.getBoolean("error");

                if (!error)
                    result = "Enregistrement réussie !";
                else {
                    result = jsonObject.getString("error_msg");
                }

            } catch ( JSONException | IOException e) {
                e.printStackTrace();
            }
            return result;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            progressDialog.dismiss();
            userCallback.done(null);
            Toast.makeText(context, result, Toast.LENGTH_LONG).show();
        }
    }
}

En couleur rouge se sont les erreurs indexées pars le débogueur.
Je voudrais savoir si j'ai bien récupéré la réponse JSON ?
Android Newbie
Android Newbie
 
Messages: 12
Enregistré le: 24 Aoû 2016

Publicité
android
Membre
 
Messages: 3452
Inscription: 1 Juil 2010
Mobile: Samsung galaxy

Re: Enregistrer un utilasteur

Messagepar absynteZero » Lun 23 Jan 2017 20:44

Ouh punaise, je ne sais répondre a ta question mais ça me donne envie d'apprendre....

si!! t'as fait une erreur dans le titre...utilisateur et pas utilasteur...bon ok je sors^^

et dans ton code, "enregistrement reussi" sans "e".. :-p

iCi: "
if (!error)
result = "Enregistrement réussie !";
else {
result = jsonObject.getString("error_msg");

Mais si je suis bien, ça n'a aucune importance sur le code du moins
___________________________________________________________________________________________________________________________________________ absynteCorp®2017 Twitter: @absynteZero
Avatar de l’utilisateur
Explorateur Android
Explorateur Android
 
Messages: 256
Enregistré le: 07 Fév 2016
Mobile: Huawei P8 GRA-L09


Retourner vers Développement