Android 安卓-改装2错误:“1”;HTTP方法注释是必需的";

Android 安卓-改装2错误:“1”;HTTP方法注释是必需的";,android,Android,关于这一点有一些问题,但似乎没有任何效果。 我试图获取Json对象形式的网页内容 将此添加到proguard规则中。pro: <pre><code>-keepattributes *Annotation* -keep class retrofit.** { *; } -keepclasseswithmembers class * { @retrofit.http.* <methods>; } -keepattributes Signature -keep c

关于这一点有一些问题,但似乎没有任何效果。 我试图获取Json对象形式的网页内容

将此添加到proguard规则中。pro:

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

-keep class com.google.gson.** { *; }
-keep class com.google.inject.** { *; }
-keep class org.apache.http.** { *; }
-keep class org.apache.james.mime4j.** { *; }
-keep class javax.inject.** { *; }
-keep class retrofit.** { *; }  </pre></code>
<pre><code> public interface LoginInterface {

    @GET("?email=myEmail@gmailcom&password=opensesame")
        Boolean getData(Callback<LoginJsonParser> cb);
}</pre></code>

LoginJsonParser class:

<pre><code>    import javax.annotation.Generated;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

@Generated("org.jsonschema2pojo")
public class LoginJsonParser {

    @SerializedName("success")
    @Expose
    private Integer success;

    @SerializedName("message")
    @Expose
    private String message;

    /**
     *
     * @return The success
     */
    public Integer getSuccess() {
        return success;
    }

    /**
     *
     * @param success The success
     */
    public void setSuccess(Integer success) {
        this.success = success;
    }

    /**
     *
     * @return The message
     */
    public String getMessage() {
        return message;
    }

    /**
     *
     * @param message The message
     */
    public void setMessage(String message) {
        this.message = message;
    }

}</pre></code>

使用错误的
@GET

起初我也面临同样的问题。从
改装1
移动到
改装2
时,一个非常常见的错误。在界面中,确保为
GET
使用了正确的导入语句


我不知道我正在使用Reformation.http中的
@GET
,而不是
@GET
from
Reformation2.http
,将注释从
Reformation.http
更改为
Reformation2.http

将完成此工作。

需要http方法注释(例如@GET、@POST等)我原以为改装2在
reformation2.*
包中。你确定你没有导入测试版或以某种方式改装1并将两者混合在一起吗?顺便说一句,如果您是根据API 23进行编译,您可能会希望使用support libs 23.3.0。我将从Reformation.*更改为Reformation 2.*并且它给了我相同的错误。我使用了support libs 23.3.0和相同的问题
<pre><code> public interface LoginInterface {

    @GET("?email=myEmail@gmailcom&password=opensesame")
        Boolean getData(Callback<LoginJsonParser> cb);
}</pre></code>

LoginJsonParser class:

<pre><code>    import javax.annotation.Generated;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

@Generated("org.jsonschema2pojo")
public class LoginJsonParser {

    @SerializedName("success")
    @Expose
    private Integer success;

    @SerializedName("message")
    @Expose
    private String message;

    /**
     *
     * @return The success
     */
    public Integer getSuccess() {
        return success;
    }

    /**
     *
     * @param success The success
     */
    public void setSuccess(Integer success) {
        this.success = success;
    }

    /**
     *
     * @return The message
     */
    public String getMessage() {
        return message;
    }

    /**
     *
     * @param message The message
     */
    public void setMessage(String message) {
        this.message = message;
    }

}</pre></code>
<pre><code>java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: retrofit.RetrofitError: LoginInterface.isLoginValid: HTTP method annotation is required (e.g., @GET, @POST, etc.).
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:400)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy0.isLoginValid(Unknown Source)
at com.myApplication.activity.Login$UserLoginTask.doInBackground(Login.java:344)
at com.myApplication.activity.Login$UserLoginTask.doInBackground(Login.java:318)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
at java.lang.Thread.run(Thread.java:818) 
Caused by: java.lang.IllegalArgumentException: LoginInterface.isLoginValid: HTTP method annotation is required (e.g., @GET, @POST, etc.).
at retrofit.RestMethodInfo.methodError(RestMethodInfo.java:107)
at retrofit.RestMethodInfo.parseMethodAnnotations(RestMethodInfo.java:179)
at retrofit.RestMethodInfo.init(RestMethodInfo.java:117)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:294)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240) 
at java.lang.reflect.Proxy.invoke(Proxy.java:393) 
at $Proxy0.isLoginValid(Unknown Source) 
at com.myApplication.activity.Login$UserLoginTask.doInBackground(Login.java:344) 
at com.myApplication.activity.Login$UserLoginTask.doInBackground(Login.java:318) 
at android.os.AsyncTask$2.call(AsyncTask.java:295) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
at java.lang.Thread.run(Thread.java:818) </code></pre>