Модификация незаконного состояния Exception Ожидаемый BEGIN_OBJECT, но был STRING в строке 1 столбец 1 путь $ - PullRequest
0 голосов
/ 19 июня 2019

Я прошел запрос на почтальона и получил успешный ответ. Теперь, когда я пытаюсь сделать то же самое с помощью кода, используя Retrofit 2, я получаю ошибку: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $.

Первоначально я получил следующую ошибку: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $, но после добавления .setLenient() к Gson builder это было решено.

Я знаю, что это обычно происходит, если Model не соответствует ответу. Но на этот раз я думаю, что проверил все коробки, но все равно я получаю ошибку.

Модель

class LoginResponse(val access_token: String?, val token_type: String?, val user: UserResponse, val expires_at: String)

class UserResponse(
  val id: Long?,
  val name: String?,
  val email: String?,
  val created_at: String,
  val updated_at: String,
  val api_token: String
)

RestApiInterface

@POST(LOGIN)
fun login(@Body user: LoginRequest): Call<LoginResponse>

Модифицированные

@Provides
@Reusable
fun provideRetrofit(gson: Gson): Retrofit {

    val interceptor = HttpLoggingInterceptor()
    interceptor.level =
        if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE


    val okBuilder = OkHttpClient.Builder()
    okBuilder.addInterceptor(interceptor)
    okBuilder.addInterceptor { chain ->
        val request = chain.request()
        val builder = request.newBuilder()
        chain.proceed(builder.build())
    }

    return Retrofit.Builder()
        .addConverterFactory(GsonConverterFactory.create(gson))
        .baseUrl(API_BASE_URL)
        .client(okBuilder.build())
        .build()
}

Gson

@Provides
fun providesGson(): Gson {
    return GsonBuilder().setLenient().create()
}

Ответ (Почтальон)

{
"access_token": "eyJ0eX...",
"token_type": "Bearer",
"user": {
    "id": 1,
    "name": "Api",
    "email": ".......",
    "created_at": "2018-07-09 08:52:31",
    "updated_at": "2019-06-12 10:58:36",
    "api_token": "OVp5CuRDLQ92tiXobTJNuf4HASfU0xpiMoChVdbyL2OQspajmFDPAqrlCLHD"
},
"expires_at": "2020-06-19 17:30:31"

}

...