Ceci est le projet de base pour mon entreprise actuelle. L'application android s'exécute bien et envoie des données à la base de données, cependant, une exception d'erreur est levée. L'image A screenshot of my phone's screen
L'activité principale
package com.mytrendin.retrofitsenddata;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import okhttp3.OkHttpClient;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class MainActivity extends AppCompatActivity {
EditText name,email, password;
Button save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name= (EditText) findViewById(R.id.name);
email= (EditText) findViewById(R.id.email);
password= (EditText) findViewById(R.id.password);
save = (Button) findViewById(R.id.save);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OkHttpClient client = new OkHttpClient();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.1.4")
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
ApiService service = retrofit.create(ApiService.class);
Student student = new Student();
student.setName(name.getText().toString());
student.setEmail(email.getText().toString());
student.setPassword(email.getText().toString());
Call<Student> call = service.insertData(student.getName(),student.getEmail(),student.getPassword());
call.enqueue(new Callback<Student>() {
@Override
public void onResponse(Call<Student> call, Response<Student> response) {
Toast.makeText(MainActivity.this, "response"+response, Toast.LENGTH_LONG).show();
name.setText("");
email.setText("");
password.setText("");
}
@Override
public void onFailure(Call<Student> call, Throwable t) {
Log.i("Hello",""+t);
Toast.makeText(MainActivity.this, "Throwable"+t, Toast.LENGTH_LONG).show();
}
});
}
});
}
}
La classe de service api:
public interface ApiService {
@FormUrlEncoded
@POST("/test/index.php")
Call<Student> insertData(@Field("name") String name, @Field("email") String email , @Field("password") String password);
}
La classe étudiante ::
public class Student {
String name, email, password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
et le script côté serveur PHP.
$username = $_POST['name'];
$useremail = $_POST['email'];
$userpassword = $_POST['password'];
$user = "root";
$pass = "[email protected]";
$host= "localhost";
$dbname="test";
$con = mysqli_connect($host,$user,$pass,$dbname);
$sql="insert into userdata(name,email,password) values('".$username."','".$useremail."','".$userpassword."');";
if(mysqli_query($con,$sql)){
echo "data inserted";
}else{
echo "Failed";
}
?>
Les autres solutions que j'ai trouvées ne fonctionnent pas pour le problème à portée de main. Où pourrais-je me tromper?
Je suis gettin un " Erreur: (55, 56) erreur: types incompatibles: Appel ne peut pas être converti en appel "message sur l'IDE lorsque je fais cela correction. –
Gatibaru
Modifier à quand vous appelez api –
Anil
Pouvez-vous poster votre code – Anil