VKCOM / vk-android-sdk

Android library for working with VK API, authorization through VK app, using VK functions.
MIT License
458 stars 226 forks source link

NullPointerException при попытке вызывать DocsService().docsGetUploadServer() #527

Open KorotaevaVasilisa opened 1 year ago

KorotaevaVasilisa commented 1 year ago

Этапы воспроизведения:

  1. Авторизоваться
    val authLauncher = VK.login(this) { result : VKAuthenticationResult ->
            when (result) {
                is VKAuthenticationResult.Success -> {
                    serverAddress()
                }
                is VKAuthenticationResult.Failed -> {
                    // User didn't pass authorization
                    println()
                }
            }
        }
        authLauncher.launch(arrayListOf(VKScope.DOCS))
  2. Вызов команды DocsService().docsGetUploadServer()

    private fun serverAddress(){
        VK.execute(DocsService().docsGetUploadServer(), object : VKApiCallback<BaseUploadServerDto>{
            override fun fail(error: Exception) {
                println()
            }
    
            override fun success(result: BaseUploadServerDto) {
                println()
            }
        })
    }
  3. При вызове команды DocsService().docsGetUploadServer() срабатывает NullPointerException
  4. Изучив код я нашла место возникновения ошибки это класс com.vk.api.sdk.VKApiManager метода executeWithExceptionAdjust vk_npe

VK SDK version: 4.0.1

xgensoft commented 1 year ago

Воспроизводится у меня тоже, при исполнении этого кода в версии 4.0.1:

        VK.execute(WallService().wallPost(VK.getUserId(), message=message, attachments=attachmentsList),
            object: VKApiCallback<WallPostResponseDto> {
                override fun success(result: WallPostResponseDto) {
                }
                override fun fail(error: Exception) {
                }
            }
        )

происходит исключение, но команда отрабатывает, запись на стене появляется:

java.lang.NullPointerException
     at com.vk.api.sdk.VKApiManager.executeWithExceptionAdjust(VKApiManager.kt:154)
     at com.vk.api.sdk.VKApiManager.execute(VKApiManager.kt:104)
     at com.vk.api.sdk.requests.VKRequest.onExecute(VKRequest.kt:97)
     at com.vk.api.sdk.internal.ApiCommand.execute(ApiCommand.kt:46)
     at com.vk.api.sdk.VK.executeSync(VK.kt:184)
     at com.vk.api.sdk.VK.execute$lambda-3(VK.kt:196)
     at com.vk.api.sdk.VK.$r8$lambda$WhbU2zvvaEaGtR_hkXlKsQEbwJk(Unknown Source:0)
     at com.vk.api.sdk.VK$$ExternalSyntheticLambda1.run(Unknown Source:4)
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:929)

При откате на версию 3.5.1 все отрабатывает без исключений.