2017-10-27 9 views
1

私はAPIここjava.lang.IllegalArgumentExceptionが:FormUrlEncodedのみリクエストボディ(例えば、@POST)とHTTPメソッドで指定することができます

にGETメソッドでデータベースからデータを取得しようとしています私は

をコード化されました

APIServive.Interface

public interface APIService { 
    @FormUrlEncoded 
    @GET("Event") 
    Call<ApiResponseModel> viewEvent(); 
} 

EventModel.Java

public class EventModel { 

    @SerializedName("nama_event") String nama_event; 
    @SerializedName("jenis_event") String jenis_event; 
    @SerializedName("creator") String creator; 
    @SerializedName("deskripsi_event") String deskripsi_event; 
    @SerializedName("tanggal") String tanggal; 
    @SerializedName("status") String status; 

    public String getNama_event() { 
     return nama_event; 
    } 

    public String getJenis_event() { 
     return jenis_event; 
    } 

    public String getCreator() { 
     return creator; 
    } 

    public String getDesk_event() { 
     return deskripsi_event; 
    } 

    public String getTanggal_event() { 
     return tanggal; 
    } 

    public String getStatus() { 
     return status; 
    } 
} 

ViewActivity.Java

public class ViewEventActivity extends AppCompatActivity { 
    @OnClick(R.id.back_arrow)void balik(){ 
    finish(); 
} 
    @BindView(R.id.search_acara)EditText searchEvent; 
    public static final String URL = "http://iseoo.id/rest_ci_iseoo/"; 
    private List<EventModel> acara = new ArrayList<>(); 
     RecyclerView.LayoutManager mlayoutManager; 
     private RecyclerViewAdapter viewAdapter; 
     @BindView(R.id.recyclerViewEvent)RecyclerView recyclerView; 
     @BindView(R.id.progress_bar)ProgressBar progressBar; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_view_event); 
     ButterKnife.bind(this); 

     viewAdapter = new RecyclerViewAdapter(ViewEventActivity.this, acara); 
     mlayoutManager = new LinearLayoutManager(this, 
     LinearLayoutManager.VERTICAL, false); 
     recyclerView.setLayoutManager(mlayoutManager); 
     recyclerView.setAdapter(viewAdapter); 
     Retrofit retrofit=new 
     Retrofit.Builder().baseUrl(URL). 
     addConverterFactory(GsonConverterFactory.create()).build(); 
     APIService API = retrofit.create(APIService.class); 
     Call<ApiResponseModel> getData = API.viewEvent(); 
     getData.enqueue(new Callback<ApiResponseModel>() { 
     @Override 
     public void onResponse(Call<ApiResponseModel> call, 
     Response<ApiResponseModel> response) { 
     progressBar.setVisibility(View.GONE); 
       acara = response.body().getResult(); 
       viewAdapter = new 
       RecyclerViewAdapter(ViewEventActivity.this, acara); 
       recyclerView.setAdapter(viewAdapter); 
       viewAdapter.notifyDataSetChanged(); 
      } 
     //  } 

     @Override 
     public void onFailure(Call<ApiResponseModel> call, Throwable t) { 

     } 
    });}} 

と私はアプリケーションを実行すると、それが与えるこの

Caused by: java.lang.IllegalArgumentException: FormUrlEncoded can only be 
specified on HTTP methods with request body (e.g., @POST).                     
for method APIService.viewEvent                     
at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:752)                     
at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:743)                     
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:185)                     
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)                     
at retrofit2.Retrofit$1.invoke(Retrofit.java:147)                     
at java.lang.reflect.Proxy.invoke(Proxy.java:397)                     
at $Proxy0.viewEvent(Unknown Source)                     
at 
com.example.lenovog480.iseooalpha.ViewEventActivity.onCreate 
(ViewEventActivity.java:61)                     
at android.app.Activity.performCreate(Activity.java:6127)                     
at android.app.Instrumentation.callActivityOnCreate 
(Instrumentation.java:1128)                     
at android.app.ActivityThread.performLaunchActivity 
(ActivityThread.java:2630) 

私はこの問題を探していると私はそれを解決しようとしました、しかし今まで私はこの問題の正しい答えを得ていませんでした。可能ならば私は本当に助けが必要なので私に連絡することができます

誰が私を助け、私の人生の感謝を保存してください:あなたは@GETのトップに@FromUrlEncoded追加する場合 ')

+0

あなたが試すことができ:https://stackoverflow.com/questions/22572301/retrofit-throwing-illegalargumentexception-exception-for-asynchronous-formurlencこの質問の – Thientvse

+0

タイトルはあなたの問題を解決するのに十分です。 –

答えて

1

、あなたはjava.lang.IllegalArgumentException: FormUrlEncoded can only be specified on HTTP methods with request body (e.g., @POST).

を持つことになり、あなたのコード内で@FormUrlEncodedを削除します。

public interface APIService { 

    @GET("Event") 
    Call<ApiResponseModel> viewEvent(); 
} 
関連する問題