2016-12-31 117 views
0

所有新年快樂,我正在從一個應用程序,從JSON數組中檢索對象的列表並將其轉換爲POJO類。但是我收到與安卓+ Eclipse的retrofit2這個錯誤的logcat當我運行的應用程序如下:改裝錯誤:服務方法無法返回無效消息

12-31 06:59:32.405: E/test(31013): Exception 
12-31 06:59:32.405: E/AndroidRuntime(31013): FATAL EXCEPTION: main 
12-31 06:59:32.405: E/AndroidRuntime(31013): Process: com.nickSoft.unics_alpha, PID: 31013 
12-31 06:59:32.405: E/AndroidRuntime(31013): java.lang.IllegalArgumentException: Service methods cannot return void. 
12-31 06:59:32.405: E/AndroidRuntime(31013):  for method UnicsAgencyApi.getStreams 
12-31 06:59:32.405: E/AndroidRuntime(31013): at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:720) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:711) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at retrofit2.ServiceMethod$Builder.createCallAdapter(ServiceMethod.java:228) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:160) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:166) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at retrofit2.Retrofit$1.invoke(Retrofit.java:145) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at $Proxy1.getStreams(Native Method) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.nickSoft.unics_alpha.Homepage.DownloadAgencyData(Homepage.java:582) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.nickSoft.unics_alpha.Homepage.ShowAllUnicsAgencyInfo(Homepage.java:548) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.nickSoft.unics_alpha.Homepage.onOptionsItemSelected(Homepage.java:394) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.app.Activity.onMenuItemSelected(Activity.java:2600) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1016) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:177) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.widget.AdapterView.performItemClick(AdapterView.java:299) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.widget.AbsListView.performItemClick(AbsListView.java:1113) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.widget.AbsListView$3.run(AbsListView.java:3638) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.os.Handler.handleCallback(Handler.java:733) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.os.Handler.dispatchMessage(Handler.java:95) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.os.Looper.loop(Looper.java:136) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at android.app.ActivityThread.main(ActivityThread.java:5136) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at java.lang.reflect.Method.invokeNative(Native Method) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at java.lang.reflect.Method.invoke(Method.java:515) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:819) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635) 
12-31 06:59:32.405: E/AndroidRuntime(31013): at dalvik.system.NativeStart.main(Native Method) 

我的API聲明代碼看起來是這樣的:

public static UnicsAgencyApi getUnicsAgencyApi() { 

     if (sUnicsAgencyApi == null) { 
      retrofit = new Retrofit.Builder().baseUrl(ENDPOINT_URL).addConverterFactory(GsonConverterFactory.create()) 
        .build(); 
      sUnicsAgencyApi = retrofit.create(UnicsAgencyApi.class); 
     } 
     return sUnicsAgencyApi; 
    } 

    public interface UnicsAgencyApi { 

     @GET("api/uconnectservice/AllAgency") 
     **void getStreams(Callback<List<AgencyModel>> callback);** 
    } 

這裏是我撥打電話:

RestApi.getUnicsAgencyApi().getStreams(new Callback<List<AgencyModel>>() { 

      @Override 
      public void onFailure(Call<List<AgencyModel>> arg0, Throwable arg1) { 
       // TODO Auto-generated method stub 

       Log.e("Error in parsing", arg0.toString()); 
      } 

      @Override 
      public void onResponse(Call<List<AgencyModel>> AgencyModelData, Response<List<AgencyModel>> response) { 
       // TODO Auto-generated method stub 

       // ADD TO List here!!!!!!!! 
       mstreamData.addAll(response.body()); 
       Log.e("Response", response.body().toString()); 
      } 

     }); 

的Logat錯誤顯示的由來是:

**void getStreams(Callback<List<AgencyModel>> callback);** 

請爲什麼我得到這個錯誤或是有什麼我做錯了,請任何指導解決這個問題,非常感謝。 乾杯

回答

1

您正在使用類似V1的語法和retrofit2。不再有回調作爲參數,而是返回一個呼叫。 -

@GET("api/uconnectservice/AllAgency") 
Call<List<AgencyModel>> getStreams(); 

您還需要更新如何調用它。對於異步呼叫,在返回的呼叫上使用enqueue -

RestApi.getUnicsAgencyApi().getStreams().enqueue(new Callback<List<AgencyModel>>() { 

      @Override 
      public void onFailure(Call<List<AgencyModel>> arg0, Throwable arg1) { 
       // TODO Auto-generated method stub 

       Log.e("Error in parsing", arg0.toString()); 
      } 

      @Override 
      public void onResponse(Call<List<AgencyModel>> AgencyModelData, Response<List<AgencyModel>> response) { 
       // TODO Auto-generated method stub 

       // ADD TO List here!!!!!!!! 
       mstreamData.addAll(response.body()); 
       Log.e("Response", response.body().toString()); 
      } 

     }); 
+0

我讚賞響應,hppy nw year 2017 :) – user3015410

相關問題