【问题标题】:Android Retrofit error HTTP method annotation is required (e.g., @GET, @POST, etc.)Android Retrofit错误需要HTTP方法注解(如@GET、@POST等)
【发布时间】:2020-03-19 11:13:46
【问题描述】:

我的 Retrofit 代码有问题,我似乎要么遗漏了什么,要么没有完全理解我需要做什么。这是我的错误的完整副本。我没有使用 ProGuard,但我确实已经应用了您在规则集中假设的所有例外情况,以确保。 Minify 设置为 false 以进行调试和发布。

谁能帮我解决这个问题,我将不胜感激!

    05-01 11:08:37.967  12277-12357/com.gbp.sean.reorderscanner         E/VMIROrderService﹕ Exception Posting Order
retrofit.RetrofitError: OrderEntryInterface.update: 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:397)
        at $Proxy0.update(Unknown Source)
        at com.gbp.sean.reorderscanner.VMIROrderService.getEntryResult(VMIROrderService.java:65)
        at com.gbp.sean.reorderscanner.VMIROrderService.onHandleIntent(VMIROrderService.java:41)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.os.HandlerThread.run(HandlerThread.java:61)
 Caused by: java.lang.IllegalArgumentException: OrderEntryInterface.update: 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:397)
        at $Proxy0.update(Unknown Source)
        at com.gbp.sean.reorderscanner.VMIROrderService.getEntryResult(VMIROrderService.java:65)
        at com.gbp.sean.reorderscanner.VMIROrderService.onHandleIntent(VMIROrderService.java:41)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.os.HandlerThread.run(HandlerThread.java:61)

这是我的 OrderEntryInterface 的副本

 import retrofit.http.GET;
 import retrofit.http.Path;

 public interface OrderEntryInterface {

    @GET("/ServiceNameFilteredOut/json/@id={id}@ord={ord}")
    OrderDetails details(
        @Path("id") String id,
        @Path("ord") String ord
    );
    OrderInfo update();
}

这是我的 OrderService 的重要部分

@Override
protected void onHandleIntent(Intent intent) {
    try {
        this.id = intent.getExtras().getString("id");
        this.ord = intent.getExtras().getString("ord");
        String result=getEntryResult();

        Log.d(getClass().getSimpleName(),result);

        if(result != null) {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Posted Successfully", Toast.LENGTH_LONG).show();
                }
            });
        }
    }
    catch (Exception e) {
        Log.e(getClass().getSimpleName(), "Exception Posting Order", e);
    }
}

private String getEntryResult() {
    RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint("http://WebPageURLFilteredOut/").build();
    OrderEntryInterface entryInterface = restAdapter.create(OrderEntryInterface.class);

    entryInterface.details(id,ord);

    OrderInfo info = entryInterface.update();

    if (info.PostOrderResult == "Confirmed") {
        return (info.PostOrderResult);
    }

    return (null);
}

【问题讨论】:

    标签: java android runtime-error retrofit


    【解决方案1】:

    您在details() 方法上有一个注释。您正在调用 update() 方法。错误消息表明 update() 方法是缺少注释的原因。而且,根据您的代码,update() 方法上没有注释。

    所以,给update() 方法添加一个Retrofit 注解。

    【讨论】:

      【解决方案2】:

      确保所有进口产品都经过改造2。例如

      import retrofit2.http.POST;
      import retrofit2.Call;
      import retrofit2.http.Field;
      import retrofit2.http.FormUrlEncoded;
      

      或您使用的任何版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-27
        • 2018-01-17
        • 1970-01-01
        • 2017-03-16
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        • 2020-05-19
        相关资源
        最近更新 更多