我目前正在为我的学习创建一个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脚本无法正常工作,因为它不接受空表单。
你能帮帮我吗?我真的被困在这里感谢
答案 0 :(得分:0)
你已经在两个地方宣布了你,你的代码开头是全局的,另一个是你的setOnClickListener。
从您的侦听器中删除此行Utilisateur u = new Utilisateur();
,它应该可以正常工作