получить исключение json с Retrofit версии 2.0 и специальными символами «-» и «_» в адресе электронной почты - PullRequest
0 голосов
/ 29 ноября 2018

У меня проблемы с передачей любого адреса электронной почты с символом - или _ , когда пользователь пытается зарегистрироваться.Вот определение модификации:

@Headers(API_KEY)
@FormUrlEncoded
@POST("signInUser")
Call<HttpResponseModel> signInUser(@Field(value ="userEmail", encoded = true) String userEmail,
                                   @Field("userId") String userId,
                                   @Field("userPasswordHash") String pwHash);

и мой вызов метода:

Call<HttpResponseModel> signInUser = retrofitApiInterface.signInUser(userEmail, userId, passWord);

    signInUser.enqueue(new Callback<HttpResponseModel>() {
        @Override
        public void onResponse(@NonNull Call<HttpResponseModel> call, @NonNull Response<HttpResponseModel> response) {
           .....  //my implemenation

        }

        @Override
        public void onFailure(@NonNull Call<HttpResponseModel> call, @NonNull Throwable t) {
            listener.onFailure(); //exception gets thrown here
        }
    });
}

И сообщение об ошибке, которое я получаю:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: ожидаемый BEGIN_OBJECT, но был BEGIN_ARRAY в пути 1 строки 2 столбца $

Например, электронное письмо, которое выдает исключение: я бы использовал:my-name@email.com.

Работает нормально, если адрес электронной почты myname@email.com

Значения вызовов:

encodedNames = {Collections$UnmodifiableRandomAccessList@12120}  size = 3
0 = "userEmail"
1 = "userId"
2 = "userPasswordHash"
encodedValues = {Collections$UnmodifiableRandomAccessList@12121}  size = 3
0 = "my-name%40email.com"
1 = ""
2 = "mypassword"
...