改造HTTP报告“HTTP方法注释,需要”在Scala代码在Android(Retrofit HTT

2019-10-20 12:24发布

我遇到一个问题,即改造库识别方法而不是它的注解。 它的报告在标题上面的错误消息。

(背景:我使用SBT与sbt-android-plugin和改造1.6.1)

我的代码是像这样:

private trait MyService {
    @GET("/api/test")
    def test(): Observable[Any]
}

object MyService {
    private val restAdapter = new RestAdapter.Builder().setEndpoint("http://somewhere").build()
    val service = restAdapter.create(classOf[MyService])

    service.test().subscribe(/* you get the idea */) // This line throws a RuntimeException with message in title above
}

还有散落在GitHub上显然是从反应原理课程,例如非常类似的例子在这里 。 我只想说,我的设置是一样的。

当我通过步骤RestMethodInfo.parseMethodAnnotations()中, requestMethod变量确实空,则requestTypeSIMPLE 。 如果我添加@FormUrlEncoded注释到我的测试方法,该requestType仍然设置为SIMPLE

是什么导致这个任何想法?

Answer 1:

原来Proguard的被剥离的注释。

在此建议GitHub的问题是有帮助的:

 -keepattributes *Annotation* -keep class retrofit.** { *; } -keepclasseswithmembers class * { @retrofit.http.* <methods>; } -keepattributes Signature 

而这个问题也是在此提到的SO职位 。



Answer 2:

在改造:2.0.0库需要使用注释从retrofit2

import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;

取而代之的retrofit

import retrofit.http.Field;
import retrofit.http.FormUrlEncoded;
import retrofit.http.GET;


文章来源: Retrofit HTTP reporting “HTTP method annotation is required” in Scala code on Android