Android - 如何在改造2中使用@Body的POST方法?

时间:2017-09-08 09:30:08

标签: android mysql

我尝试使用方法post RetrofitAPI从我的Android应用程序将用户插入MySQL数据库。但是我得到了这个错误: java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行第1行路径$ 处是STRING。这是我的代码: 文件GetAPI:

public interface GetApi {
@POST("addmember.php")
Call<ModelInsertUser> insertUser(
        @Body ModelInsertUser modelLogin
);}

文件ModelInsertUser:

public class ModelInsertUser implements Serializable {

private String ten_tv;
private String mk_tv;

public ModelInsertUser(String ten_tv, String mk_tv) {
    this.ten_tv = ten_tv;
    this.mk_tv = mk_tv;
}

public String getTen_tv() {
    return ten_tv;
}

public String getMk_tv() {
    return mk_tv;
}

public void setTen_tv(String ten_tv) {
    this.ten_tv = ten_tv;
}

public void setMk_tv(String mk_tv) {
    this.mk_tv = mk_tv;
}}

我的MainActivity(只有addMember方法):

private void addMember() {
    ModelInsertUser model = new ModelInsertUser(edtUser.getText().toString(),edtPass.getText().toString());
    Gson gson = new GsonBuilder()
            .setLenient().create();
    Retrofit retrofit = new Retrofit.Builder().baseUrl("http://192.168.1.130/database/")
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();
    GetApi service = retrofit.create(GetApi.class);
    Call<ModelInsertUser> call = service.insertUser(model);
    call.enqueue(new Callback<ModelInsertUser>() {
        @Override
        public void onResponse(Call<ModelInsertUser> call, Response<ModelInsertUser> response) {
            Log.d("DEMOO","hello");
        }

        @Override
        public void onFailure(Call<ModelInsertUser> call, Throwable t) {
            Log.d("DEMOO",t.getMessage());
        }
    });
}

我知道这个错误,因为我需要一个JSON对象,但我有String,但我不知道 知道这个错误在哪里。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

  

试试这个

   @POST("addmember.php")
Call<JsonElement> insertUser(
        @Body ModelInsertUser modelLogin
);