Ожидаемый BEGIN_OBJECT, но был строкой в ​​строке 5, путь 1, столбец $. Я получаю эту ошибку и оказывается, что ни одно из решений не работает - PullRequest
0 голосов
/ 03 мая 2020

На Github я обнаружил, что очистка проекта работает просто отлично, но это не помогло. Я использую Retofit 2. И это зависимости -

реализация 'com.squareup.retrofit2: retrofit: 2.8.1'

реализация 'com.squareup.retrofit2: converter-gson: 2.8.1 '

реализация' com.google.code.gson: gson: 2.8.5 '

Мой класс модели

public class Register {
    private String email,password,firstname,lastname,snuid;

    public Register(String email, String password, String firstname, String lastname, String snuid) {
        this.email = email;
        this.password = password;
        this.firstname = firstname;
        this.lastname = lastname;
        this.snuid = snuid;
    }
}

Мой класс JsonApiHolder

public interface Pythonforeverybody {
    @GET("medicines")
    Call<List<Post>> getprods();

    @GET("medicines/{id}")
    Call<List<Post>> getprods (@Path("id") int id1);


    @POST("register/")
    Call <Register> getreg(@Body Register register);


}

А метод в Основном занятии

   private void postcontent() {
        Register register = new Register("ss501@snu.edu.in",
                "123456","Shardul","Singh","ss501");

        Gson gson = new GsonBuilder()
                .setLenient()
                .create();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https:// Some API") 
                 //I gave the correct Api link over here, no problem with that 
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();


        Pythonforeverybody jsonPlaceHolderApi = retrofit.create(Pythonforeverybody.class);
        Call<Register> call = jsonPlaceHolderApi.getreg(register);



        call.enqueue(new Callback<Register>() {
            @Override
            public void onResponse(Call<Register> call, Response<Register> response) {
                if (!response.isSuccessful()) {
                    tv.setText("Code hh: " + response.code());
                    return;
                }
                String content = "";
                    content += "Code  " + response.code() + "\n";
                   tv.append(content);
                }

            @Override
            public void onFailure(Call<Register> call, Throwable t)
            {
                tv.setText(t.getMessage());
            }


        });



    }
}

1 Ответ

0 голосов
/ 09 мая 2020

Используйте это:

@POST("register/?format=json")
    Call <Register> getreg(@Body Register register);

вместо

@POST("register/")
    Call <Register> getreg(@Body Register register);
...