Impossible de lire ce que la socket reçoit du serveur Android

J'ai essayé de connecter une socket à un serveur pour envoyer des données fournies par l'utilisateur afin de m'inscrire à un service de suivi, le serveur reçoit les données et je peux le lire, mon problème est que le serveur est censé réponds-moi quelque chose et je ne suis pas sûr que le Socket l'obtienne.

J'utilise un Toast pour montrer ce que la variable tient après que le serveur ait répondu mais il ne montre rien, c'est pourquoi je pense que je fais quelque chose de mal avec mon implémentation de socket.

public void btnRegistrar(View view) {

        name = nombre.getText().toString();
        last = apellido.getText().toString();
        mail = correo.getText().toString();
        num = numero.getText().toString();
        ID = collar.getText().toString();

        if(name.matches("") || last.matches("") || mail.matches("") || num.matches("") || ID.matches("")){
            Toast.makeText(getBaseContext(), "Favor de llenar todos los campos para poder continuar", Toast.LENGTH_LONG).show();
        }else if(num.length()<10){
            Toast.makeText(getBaseContext(), "Favor de ingresar su número a 10 dígitos", Toast.LENGTH_LONG).show();
        }else{
            registro = name + "," + last + "," + mail + "," + num + "," + ID + "," + "0";
            Registro(registro);
            saveProperties();
            Intent intent = new Intent(this, NewMapActivity.class);
            startActivity(intent);
        }
    }//btnRegistrar

    public void Registro (String str){
        final String Registro = str;

        new Thread(new Runnable(){
            public void run(){
                try{
                    Socket client = new Socket(ip2, port);
                    ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());
                    out.writeObject(Registro);
                    ObjectInputStream in = new ObjectInputStream(client.getInputStream());
                    AppID = (String) in.readObject();
                    out.close();
                    in.close();
                    client.close();
                }catch (UnknownHostException e){
                    e.printStackTrace();
                }catch(IOException e){
                    e.printStackTrace();
                } catch (ClassNotFoundException e1) {
                    e1.printStackTrace();
                }
            }
        }).start();
        Toast.makeText(getApplicationContext(), AppID, Toast.LENGTH_LONG).show();
    }//Registro`
0
Je l'ai déjà fait mais le Toast n'apparait pas, c'est pourquoi je l'ai mis dans le Thread, la variable String est globale, donc je pensais que ça me donnerait la valeur du serveur et je pourrais l'utiliser en dehors du thread.
ajouté l'auteur xaviie, source
Votre Toast est au mauvais endroit car il sera exécuté avant l'exécution (). Placez une valeur de départ dans AppId et vous verrez cette valeur de départ. Vous devriez placer ce Toast dans un appel à runOnUiThread() que vous placez comme dernière instruction dans run ().
ajouté l'auteur greenapps, source
Le code de connexion de socket est écrit dans un thread différent et le code pour afficher le toast est écrit en dehors du nouveau code de thread. Est-ce fait délibérément? Déplacez-le dans le fil et vérifiez.
ajouté l'auteur 7383, source
Peut-être essayer d'ajouter des journaux dans le fil de côté et voir que vous recevez vraiment des données
ajouté l'auteur 7383, source

Il n'y a pas de réponses.

0