当前位置: 首页 > 知识库问答 >
问题:

Android改装错误需要HTTP方法注释(例如@get、@post等)

张宝
2023-03-14

我对我的修改代码有一个问题,我似乎缺少了什么,或者没有完全理解我需要做什么。这是我的错误的完整副本。我没有使用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)
 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();
}
@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);
}

共有1个答案

冯哲彦
2023-03-14

您有details()方法的注释。您正在调用update()方法。错误消息指出update()方法是缺少注释的部分。而且,根据您的代码,您没有update()方法的注释。

因此,向update()方法添加一个翻新注释。

 类似资料:
  • Stacktrace: 界面: 我的应用程序在调试(在虚拟和真实设备上)上运行良好,但在发布构建后,它在任何地方都无法运行(因为改型会引发错误)。我尝试了所有存在的方法来修复它,但任何一种都不起作用。 我的进口商品很好 我添加了守卫规则:

  • 我使用的是改型2.1,当我调用@get时,它会说 现在..如果我定义@retrofit.http.get,它将抛出 以及方法 分级文件

  • 对不起,我是java和android的新手。我想理解为什么它总是响应错误。非常感谢。 进口 是的,我进入了互联网

  • 我可以使用CURL向<代码>https://httpbin.org/post如下例所示: 您可以看到它发送了arg1/arg2参数,它们在回显响应中。 我想用Java复制这段代码。我自己做这件事运气不好,找不到带有负载的HTTP/2 POST示例。有一些使用HTTP/2进行GET/POST调用的示例,但没有有效负载,我确实可以编写代码来发出请求,但无法发送有效负载。如果使用相同的代码但使用HTTP

  • 使用HTTP RESTful方法GET/POST/等。它们是多余的吗? 我只是没有看到建议为方法调用添加一个限定符(据我所知,GET、POST等..是一个限定符)。为什么不直接通过URL调用一个方法(像server.domain/methods/AddNewProduct那样),由服务器端来决定怎么做呢?我知道什么时候使用GET、POST和UPDATE等。(CRUD过程bla-bla-bla)我只