vk-android-sdk icon indicating copy to clipboard operation
vk-android-sdk copied to clipboard

`JsonSyntaxException` при вызове `GroupsService().groupsGetMembers()` без дополнительных полей

Open TimPushkin opened this issue 2 years ago • 0 comments

Если вызывать VK.executeSync() с параметром GroupsService().groupsGetMembers(), не передавая в него дополнительные поля в параметре fields, то запрос падает с ошибкой

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was NUMBER at path $.items[0]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
        at com.google.gson.Gson.fromJson(Gson.java:932)
        at com.google.gson.Gson.fromJson(Gson.java:1003)
        at com.google.gson.Gson.fromJson(Gson.java:975)
        at com.vk.sdk.api.groups.GroupsService.groupsGetMembers$lambda-190(GroupsService.kt:1018)
        at com.vk.sdk.api.groups.GroupsService.$r8$lambda$LD78j1c4qXoqniFsT21ZTxs1Jqw(Unknown Source:0)
        at com.vk.sdk.api.groups.GroupsService$$ExternalSyntheticLambda14.parseResponse(Unknown Source:0)
        at com.vk.sdk.api.NewApiRequest.parseResponse(Unknown Source:8)
        at com.vk.sdk.api.NewApiRequest.parse(NewApiRequest.kt:48)
        at com.vk.api.sdk.chain.MethodChainCall.parseResult(MethodChainCall.kt:91)
        at com.vk.api.sdk.chain.MethodChainCall.runRequest(MethodChainCall.kt:75)
        at com.vk.api.sdk.chain.MethodChainCall.call(MethodChainCall.kt:71)
        at com.vk.api.sdk.chain.ValidationHandlerChainCall.call(ValidationHandlerChainCall.kt:44)
        at com.vk.api.sdk.chain.ApiMethodPriorityChainCall.call(ApiMethodPriorityChainCall.kt:28)
        at com.vk.api.sdk.chain.InvalidCredentialsObserverChainCall.callWithAuthCheck(InvalidCredentialsObserverChainCall.kt:41)
        at com.vk.api.sdk.chain.InvalidCredentialsObserverChainCall.call(InvalidCredentialsObserverChainCall.kt:37)
        at com.vk.api.sdk.chain.TooManyRequestRetryChainCall.call(TooManyRequestRetryChainCall.kt:46)
        at com.vk.api.sdk.chain.RateLimitReachedChainCall.call(RateLimitReachedChainCall.kt:37)
        at com.vk.api.sdk.chain.InternalErrorRetryChainCall.call(InternalErrorRetryChainCall.kt:47)
        at com.vk.api.sdk.VKApiManager.executeWithExceptionAdjust(VKApiManager.kt:144)
        at com.vk.api.sdk.VKApiManager.execute(VKApiManager.kt:95)
        at com.vk.api.sdk.requests.VKRequest.onExecute(VKRequest.kt:94)
        at com.vk.api.sdk.internal.ApiCommand.execute(ApiCommand.kt:46)
        at com.vk.api.sdk.VK.executeSync(VK.kt:215)
        at ...

Если же запросить хотя бы одно дополнительное поле, то такого не происходит. Также это не происходит, если в ответе на запрос нет элементов, то есть в сообществе нет участников.

Вероятно, это вызвано тем, что без запроса дополнительных полей groups.getMembers возвращает лишь список идентификаторов пользователей в виде чисел, а не объекты пользователей, которые ожидаются в vk-android-sdk.

Использую версию 3.5.2.

TimPushkin avatar Apr 04 '22 10:04 TimPushkin