![](/img/trans.png)
[英]Android Studio showing this error :Retrofit2 Android HTTP method annotation is required (e.g., @GET, @POST, etc.)
[英]Android Retrofit error HTTP method annotation is required (e.g., @GET, @POST, etc.)
我的 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);
}
您在details()
方法上有一個注釋。 您正在調用update()
方法。 錯誤消息表明update()
方法缺少注釋。 而且,根據您的代碼,您沒有關於update()
方法的注釋。
因此,向update()
方法添加 Retrofit 注釋。
確保所有進口都是改裝2。 例如
import retrofit2.http.POST;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
或您使用的任何版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.