java.lang.IllegalArgumentException:未找到 Retrofit 注释。(参数#4)

普拉蒂克·巴诺德卡

我正在尝试连接到 REST API 端点

以下是我的WebService.kt

package <package_name>.data.services

import ch.iazi.paidrent.BuildConfig
import ch.iazi.paidrent.models.DefaultParameters
import retrofit2.Response
import retrofit2.http.GET
import retrofit2.http.Headers
import retrofit2.http.Query

interface WebService {

    companion object{
         const val ENDPOINT_DEFAULT_PARAMETERS = "/appDefaultParameterValues"
    }

   @Headers("Content-Type: application/x-www-form-urlencoded")
   @GET(BuildConfig.APPVERSION + ENDPOINT_DEFAULT_PARAMETERS)
   suspend fun getDefaultParameters(
      @Query("app") app: String,
      @Query("tid") tid: Long,
      @Query("uid") uid: String
   ): Response<DefaultParameters>

}

这是我的 Repository.kt -

package <package_name>.data

import androidx.lifecycle.LiveData
import <package_name>.data.services.ServiceBuilder
import <package_name>.data.services.WebService
import <package_name>.models.DefaultParameters
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch

object Repository{

    val API = ServiceBuilder.buildWebService(WebService::class.java)

    fun getDefaultParameters(app:String,tid:Long,uid:String):LiveData<DefaultParameters>{
        return object : LiveData<DefaultParameters>(){
            override fun onActive() {
                super.onActive()
                CoroutineScope(IO).launch {
                    val response = API.getDefaultParameters(app,tid,uid)
                    print(response)
                }
            }
        }
    }

}

当我调用存储库中的方法时,这是我的 logcat:-

2020-03-02 15:15:48.112 13174-13251/<package_name> E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1
    Process: <package_name>, PID: 13174
    java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #4)
        for method WebService.getDefaultParameters
        at retrofit2.Utils.methodError(Utils.java:52)
        at retrofit2.Utils.methodError(Utils.java:42)
        at retrofit2.Utils.parameterError(Utils.java:61)
        at retrofit2.RequestFactory$Builder.parseParameter(RequestFactory.java:311)
        at retrofit2.RequestFactory$Builder.build(RequestFactory.java:182)
        at retrofit2.RequestFactory.parseAnnotations(RequestFactory.java:65)
        at retrofit2.ServiceMethod.parseAnnotations(ServiceMethod.java:25)
        at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:168)
        at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
        at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
        at $Proxy1.getDefaultParameters(Unknown Source)
        at ch.iazi.paidrent.data.Repository$getDefaultParameters$1$onActive$1.invokeSuspend(Repository.kt:20)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)

我已经使用 @Query 注释在我的接口定义中注释了所有 3 个参数。日志消息显示参数 #4 。但是,我的端点调用中没有 4 个参数。我在这里错过了什么吗?

普拉蒂克·巴诺德卡

这是通过将 build.gradle 中的改造版本从 2.5.0 更新到 2.6.0 来解决的。从 2.6.0 版本开始,支持 Kotlin 协程。

谢谢

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

未找到 Retrofit 注释。(参数#2)

Android:自定义 AlertDialog,viewPager:java.lang.IllegalArgumentException:未找到 id 的视图

ViewPager作为listview行java.lang.IllegalArgumentException:未找到ID的视图

java.lang。RuntimeException找不到Retrofit批注。(参数3)

在Retrofit2的单个请求中使用@FieldMap和@Part会得到java.lang.IllegalArgumentException:仅允许使用一种编码注释。

在 RunWith 注释中使用 SerenityParameterizedRunner 进行 junit 测试:未找到测试(java.lang.Exception:未找到匹配方法的测试)

java.lang.IllegalArgumentException:API接口不得扩展其他接口Retrofit 2

java.lang.IllegalArgumentException:未找到片段 HomeFragment 的 id 0x7f0e0084 (com.example.dell.foodcourt:id/content) 的视图

在Google Cloud Platform中运行数据流时出现“ java.lang.IllegalArgumentException:未找到方案gs的文件系统”

Java反射:即使存在注释也未找到

将参数传递给Bean时,未找到依赖项的类型为[java.lang.String]的合格Bean

Android-java.lang.UnsatisfiedLinkError:未找到本机方法

如何解决java.lang.IllegalArgumentException:无法找到命名参数[enteredValue],期望Hibernate 5.4.15 Final中的[]之一?

Android java.lang.illegalargumentException无法找到本机库main

java.lang.IllegalArgumentException:错误引用的类型不是注释类型

java.lang.RuntimeException:无法实例化活动ComponentInfo {…}:java.lang.ClassNotFoundException:未找到类

java.lang.IllegalArgumentException:Callable期望有4个参数,但提供了3个

春季启动-neo4j-java.lang.IllegalArgumentException:参数类型不匹配

java.lang.IllegalArgumentException:参数“ directory”不是目录

java.lang.IllegalArgumentException:无法解析参数编号:电话

java.lang.IllegalArgumentException:未知参数名称:客户

JSF:java.lang.IllegalArgumentException:无法解析参数编号

Retrofit onResponse 上的 java.lang.NullPointerException 错误

java.lang.BootstrapMethodError:初始化Retrofit时,调用站点#4引导程序方法发生异常

JMeter的 - OpenJDK的:java.lang.module.FindException:模块java.activation未找到

面对 java.lang.IllegalArgumentException

java.lang.IllegalArgumentException onActivityResult

错误:java.lang.IllegalArgumentException

Retrofit2,java.lang.StackOverflowError 不能转换为 java.lang.RuntimeException