使用不同类

时间:2017-03-21 19:17:10

标签: php android mysql json

我目前正在为我的学习创建一个Android应用。此应用程序必须向数据库发送数据和从数据库接收数据。

为此,我有一个MySQL数据库和一个Apache服务器。我的Android应用程序使用JSon与服务器通信,服务器执行PHP脚本与数据库通信。

我正在尝试制作一个简单的“登录”模块,但我不知道如何在Android中的两个类中进行通信。有了我的代码,我认为会更清楚:

public class Inscription extends AppCompatActivity {
    Utilisateur u = new Utilisateur();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inscription);

        Button connexion = (Button) findViewById(R.id.buttonInscription);
        connexion.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText inputLogin = (EditText) findViewById(R.id.editTextLogin);
                EditText inputMdp = (EditText) findViewById(R.id.editText3Mdp);
                EditText inputEmail = (EditText) findViewById(R.id.editTextMail);

                Log.v("Login input: ", inputLogin.getText().toString());

                Utilisateur u = new Utilisateur();
                u.setLogin(inputLogin.getText().toString());
                u.setMdp(inputMdp.getText().toString());
                u.setMail(inputEmail.getText().toString());

                Log.v("User: ", u.toString());

                new InscriptionServeur().execute();
                Intent intent = new Intent(Inscription.this, Inscription.class);
                startActivity(intent);

            }
        });

    }


    class InscriptionServeur extends AsyncTask<String, String, String> {
        private final String url = "http://xxx.xxx.xxx.xxx/xxxx/scriptInscription.php";
        private final OkHttpClient client = new OkHttpClient();
        private Gson gson = new Gson();
        private String c;

        protected String doInBackground(String... args) {
            try {
                post(url);
            } catch (IOException e) {
                e.printStackTrace();
            }

            return "";
        }

        public String post(String url) throws IOException {
            // Prepare the request.
            c=gson.toJson(u);
           // MediaType JSON_TYPE = MediaType.parse("application/json; charset=utf-8");
            MediaType JSON_TYPE = MediaType.parse("application/json; charset=utf-8");
            Log.v("Json: ", c);
            Log.v("User bis: ", u.toString());

            Request myGetRequest = new Request.Builder()
                    .url(url)
                    .post(RequestBody.create(JSON_TYPE, c))
                    .build();
            // Get the result.
            client.newCall(myGetRequest).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    Context context = getApplicationContext();

                    Toast.makeText(context, "FAIL", Toast.LENGTH_LONG);
                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    Context context = getApplicationContext();

                    Toast.makeText(context, "PASS", Toast.LENGTH_LONG);
                }
            });
            return null;

        }
    }
}

你可以看到,这很简单。 我的问题是,当我记录第一个“用户”(在onCreate()方法中)时,用户完全显示,但是当我在post()方法中使用相同的用户执行相同的日志时(在InscriptionServeur类中),它没有显示任何内容,因此PHP脚本无法正常工作,因为它不接受空表单。

你能帮帮我吗?我真的被困在这里

感谢

1 个答案:

答案 0 :(得分:0)

你已经在两个地方宣布了你,你的代码开头是全局的,另一个是你的setOnClickListener。

从您的侦听器中删除此行Utilisateur u = new Utilisateur();,它应该可以正常工作