【发布时间】:2017-08-21 13:28:52
【问题描述】:
这是我目前工作的基础项目。 android 应用程序运行正常并将数据发送到数据库,但是抛出了错误异常。 图片A screenshot of my phone's screen
主要活动
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();
}
});
}
});
}
}
api服务类:
public interface ApiService {
@FormUrlEncoded
@POST("/test/index.php")
Call<Student> insertData(@Field("name") String name, @Field("email") String email , @Field("password") String password);
}
学生班级::
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;
}
}
和 PHP 服务器端脚本。
$username = $_POST['name'];
$useremail = $_POST['email'];
$userpassword = $_POST['password'];
$user = "root";
$pass = "admin@00100";
$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";
}
?>
我发现的其他解决方案无法解决当前的问题。我哪里出错了?
【问题讨论】:
标签: php android mysqli retrofit2 gson