私は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追加する場合 ')
あなたが試すことができ:https://stackoverflow.com/questions/22572301/retrofit-throwing-illegalargumentexception-exception-for-asynchronous-formurlencこの質問の – Thientvse
タイトルはあなたの問題を解決するのに十分です。 –