Как получить данные ответа на Android с помощью клиента Apollo для GraphQL, если http-код не равен 200? - PullRequest
0 голосов
/ 03 января 2019

Я новичок в GraphQL с помощью клиента Apollo на Android. Я пытаюсь зарегистрировать пользователя на сервере с помощью мутации graphQL.

Я вызываю мутацию и, если данные пользователя недействительны, я получаю http код 422: Unprocessible Entity, и в этом случае я не могу получить какие-либо подробности ответа. Я использую стандартный способ сделать звонок:

.enqueue(object : ApolloCall.Callback<CreateUserMutation.Data>() {
                    override fun onFailure(e: ApolloException) {
                    }
                    override fun onResponse(response: 
Response<CreateUserMutation.Data>) {
                    }

И после этого я в блоке onFailure. ApolloException содержит только описание http кода. Но я хочу видеть подробности об ошибках в полном ответе, который я могу видеть через Почтальона. Я уже пробовал com.apollographql.apollo.ApolloCall.Callback # onHttpError обратный вызов, но тело networkResponse = null. Я описал эту проблему здесь, но не исправил мою проблему: https://github.com/apollographql/apollo-android/issues/1166

1 Ответ

0 голосов
/ 25 мая 2019

Способ сделать это - проверить, является ли ApolloException instanceof ApolloHttpException.

Если это так, вы можете получить throwable.rawResponse().code() из него.

Если это не так, это означает, что это не ошибка сервера (возможно, тайм-аут или другие)

...