Retrofit2 Throwablecom.google.gsonJsonSyntax ожидал begin_object, но была строкой в ​​строке 2, путь 1, столбец $

Это базовый проект для моего настоящего начинания.
Приложение для Android работает нормально и отправляет данные в базу данных, однако возникает исключение ошибки.
ИзображениеСкриншот экрана моего телефона

Основная деятельность

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";
}
?>

Другие решения, которые я нашел, не работают для решения проблемы. Где я могу пойти не так?

0

Решение

Проблема на самом деле после вставки вы получаете ответ как String но вы назначаете его Class Student

Так замени

Call<Student> insertData(@Field("name") String name, @Field("email") String email , @Field("password") String password);

с

Call<String> insertData(@Field("name") String name, @Field("email") String email , @Field("password") String password);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]