Android Ожидается BEGIN_OBJECT, но в строке 1 столбца 1 произошла ошибка STRING - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь решить эту ошибку, но не могу найти решение, чтобы решить мою проблему, так как я перепробовал все приведенные ссылки, поэтому я должен прийти сюда.

Я пытаюсь зарегистрировать пользователя, но не могу. Пожалуйста, помогите мне, поскольку эта проблема уже заняла весь мой день. Заранее спасибо.

Мой ApiClient. Java здесь

public class Apiclient {

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

public static final String BASE_URL="http://MyIP/MYFoldername/";
public static Retrofit retrofit=null;

public static Retrofit getApiclient(){

    if (retrofit==null){
        retrofit=new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }
    return retrofit;
}

Пользователь. Java класс

public class User {

private String response;
private String name;

public String getResponse() {
    return response;
}

public String getName() {
    return name;
}

MainActivity

 public static PrefConfig prefConfig;
EditText txt_username, txt_email, txt_password;
Button buttonRegister;
TextView textViewSignIn;
public static ApiInterface apiInterface;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    apiInterface = Apiclient.getApiclient().create(ApiInterface.class);
    txt_email = findViewById(R.id.email);
    txt_username = findViewById(R.id.name);
    txt_password = findViewById(R.id.password);
    buttonRegister = findViewById(R.id.register);
    textViewSignIn = findViewById(R.id.signin);

    buttonRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            register();
        }
    });
}

private void register() {

    final String userName = txt_username.getText().toString();
    final String email = txt_email.getText().toString();
    final String password = txt_password.getText().toString();


    Call<User> call = MainActivity.apiInterface.performReg(userName, email, password);
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            assert response.body() != null;
            if (response.body().getResponse().equals("ok")) {
                MainActivity.prefConfig.displayToast("REGISTER");
            } else if (response.body().getResponse().equals("exist")) {
                MainActivity.prefConfig.displayToast("EXIST");
            } else if (response.body().getResponse().equals("error")) {
                MainActivity.prefConfig.displayToast("ERROR");
            }
        }

        @Override
        public void onFailure(Call<User> call, Throwable t) {
            Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
}

Here is my json Picture

1 Ответ

0 голосов
/ 06 марта 2020

Код, который вы написали, верен, но я думаю, что результатом является нечто, а не JSON форматированная строка. Возможно, это происходит из-за вашего тестового подключения мобильного устройства к серверу MyIP.

Чтобы проверить ситуацию, попробуйте получить ответ от сервера, используя String вместо User, и убедитесь, что ответ совпадает с тем, что вы получаете в PostMan.

...