Android开发之Retrofit常见错误@FieldMap parameters can only be used with form encoding. (parameter #1)
生活随笔
收集整理的這篇文章主要介紹了
Android开发之Retrofit常见错误@FieldMap parameters can only be used with form encoding. (parameter #1)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
錯誤如下圖:
2020-05-18 21:24:07.135 23844-23844/com.example.mvptest E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.mvptest, PID: 23844java.lang.IllegalStateException: Could not execute method for android:onClickat android.view.View$DeclaredOnClickListener.onClick(View.java:4732)at android.view.View.performClick(View.java:5644)at android.view.View$PerformClick.run(View.java:22440)at android.os.Handler.handleCallback(Handler.java:751)at android.os.Handler.dispatchMessage(Handler.java:95)at android.os.Looper.loop(Looper.java:154)at android.app.ActivityThread.main(ActivityThread.java:6166)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)Caused by: java.lang.reflect.InvocationTargetExceptionat java.lang.reflect.Method.invoke(Native Method)at android.view.View$DeclaredOnClickListener.onClick(View.java:4727)at android.view.View.performClick(View.java:5644)?at android.view.View$PerformClick.run(View.java:22440)?at android.os.Handler.handleCallback(Handler.java:751)?at android.os.Handler.dispatchMessage(Handler.java:95)?at android.os.Looper.loop(Looper.java:154)?at android.app.ActivityThread.main(ActivityThread.java:6166)?at java.lang.reflect.Method.invoke(Native Method)?at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)?at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)?Caused by: java.lang.IllegalArgumentException: @FieldMap parameters can only be used with form encoding. (parameter #1)for method RequestApi.registerat retrofit2.Utils.methodError(Utils.java:53)at retrofit2.Utils.methodError(Utils.java:43)at retrofit2.Utils.parameterError(Utils.java:62)at retrofit2.RequestFactory$Builder.parseParameterAnnotation(RequestFactory.java:578)at retrofit2.RequestFactory$Builder.parseParameter(RequestFactory.java:306)at retrofit2.RequestFactory$Builder.build(RequestFactory.java:193)at retrofit2.RequestFactory.parseAnnotations(RequestFactory.java:67)at retrofit2.ServiceMethod.parseAnnotations(ServiceMethod.java:26)at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:192)at retrofit2.Retrofit$1.invoke(Retrofit.java:149)at java.lang.reflect.Proxy.invoke(Proxy.java:813)at $Proxy0.register(Unknown Source)at com.example.mvptest.model.HomeModel.requestData(HomeModel.java:50)at com.example.mvptest.presenter.HomePresenter.setShowData(HomePresenter.java:36)at com.example.mvptest.MainActivity.showResult(MainActivity.java:120)我們在使用Retrofit進行POST請求的時候使用表單提交需要使用@FieldMap和@FormUrlEncoded注解結合使用不然會報錯如上,解決辦法上面日志也給出了
@FieldMap parameters can only be used with form encoding. (parameter #1)
意思是說需要一個from表單編碼加上即可
@FormUrlEncoded@POST("/user/register")Call<RegisterBean> register(@FieldMap Map<String, String> data);?
總結
以上是生活随笔為你收集整理的Android开发之Retrofit常见错误@FieldMap parameters can only be used with form encoding. (parameter #1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为了让大家都去玩新作,初代《愤怒的小鸟》
- 下一篇: 瑞幸咖啡公布2022年财报:年收入首次突