Ожидаемый BEGIN_OBJECT, но - PullRequest
0 голосов
/ 05 июля 2018

У меня большая проблема с работой в Retrofit Library в Android Studio, когда я создаю файл PHP для получения чего-либо или публикую что-то в базе данных и работаю на JSON, который возвращается из API, все нормально, когда я работаю с localhost, НО, когда я загружаю эти файлы PHP на реальный хост, я получаю эту ошибку в Android Studio:

Ожидается BEGIN_OBJECT, но в строке 1 столбца 1

указано значение STRING *.

Например:

Это мой интерфейс:

@FormUrlEncoded
@POST("checkuser.php")
Call<chechExistsUser> checkUserExists(@Field("phone") String phone);

Это класс дооснащения:

public class Retrofit_Tools {
    private static Retrofit retrofit = null;

    public static Retrofit getRetrofit(String baseUrl) {

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


    }
}

и это общий класс, который я получаю в любом классе деятельности:

public class Common {
    private static final String baseUrl="http://192.168.56.1/drinkshop1/";
    //private static final String baseUrl="http://reza-ghahremani.zili.ir/drinkshop/";


    public static Retrifit_Interface getApi(){
        return Retrofit_Tools.getRetrofit(baseUrl).create(Retrifit_Interface.class);
    }
}

и я использую этот код в любой деятельности:

Retrifit_Interface retrofit=Common.getApi();

наконец, я могу использовать любой метод в интерфейсе:

retrofit.checkUserExists(etPhone.getText().toString().trim()).enqueue(new Callback<chechExistsUser>() {
            @Override
            public void onResponse(Call<chechExistsUser> call, Response<chechExistsUser> response) {
                Toast.makeText(MainActivity.this, "" + response.body().error_message, Toast.LENGTH_LONG).show();
            }

            @Override
            public void onFailure(Call<chechExistsUser> call, Throwable t) {
                Toast.makeText(MainActivity.this, "" + t.getMessage(), Toast.LENGTH_LONG).show();
                return;

            }
        });

Если проблема в PHP-файлах или API, почему в localhost все нормально? почему все нормально в localhost и не работает в realhost?

1 Ответ

0 голосов
/ 30 июля 2018

Несколько недель назад у друга была очень похожая проблема , если не то же самое . Мы узнали, что Retrofit нужна квадратная скобка, окружающая JSON. Например, JSON, как это:

{  
  "data":{  
     "info1":"something here"
    }
}

Должен быть преобразован в это:

[{
  "data":{  
    "info1":"something here"
 }
}]

Может быть, это может решить вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...