Android 表单编码的方法必须至少包含一个@字段

Android 表单编码的方法必须至少包含一个@字段,android,retrofit,Android,Retrofit,我无法理解这里的问题是什么: 是图书馆的问题吗? java.lang.IllegalArgumentException:表单编码方法必须包含 至少有一个@字段。 对于方法ApiInterface.hitCheckVersionApi$79c79d47 在2.ServiceMethod$Builder.methodError处(ServiceMethod.java:720) 在2.ServiceMethod$Builder.build处(ServiceMethod.java:11711) 在Ref

我无法理解这里的问题是什么: 是图书馆的问题吗?

java.lang.IllegalArgumentException:表单编码方法必须包含 至少有一个@字段。 对于方法ApiInterface.hitCheckVersionApi$79c79d47 在2.ServiceMethod$Builder.methodError处(ServiceMethod.java:720) 在2.ServiceMethod$Builder.build处(ServiceMethod.java:11711) 在Refundation2.Refundation.loadServiceMethod(Refundation.java:166)中 在reformation2.reformation$1.invoke(reformation.java:145) 位于java.lang.reflect.Proxy.invoke(Proxy.java:1006) 位于$Proxy3.hitCheckVersionApi$79c79d47(未知来源) 位于com.shopoholicbuddy.activities.SplashActivity.onCreate(SplashActivity.java:1058)

下面是代码示例:

  @FormUrlEncoded
    @POST("checkversion")
    Call<ResponseBody> hitCheckVersionApi(@FieldMap HashMap<String, String> map);
 private void checkForceUpdateAPI() {
        if (AppUtils.getInstance().isInternetAvailable(this)) {
            final HashMap<String, String> params = new HashMap<>();
            params.put(Constants.NetworkConstant.PARAM_VERSION_NAME, getAppVersion(this));
            params.put(Constants.NetworkConstant.PARAM_PLATFORM, "1");
            params.put(Constants.NetworkConstant.PARAM_APP_TYPE, "2");
            ApiInterface apiInterface = RestApi.createService(this, ApiInterface.class);
            Call<ResponseBody> call = apiInterface.hitCheckVersionApi(params);
            ApiCall.getInstance().hitService(this, call, new NetworkListener() {
                @Override
                public void onSuccess(int responseCode, String response, int requestCode) {
                    try {
                        VersionUpdateResponse bean = new Gson().fromJson(response, VersionUpdateResponse.class);
                        if (bean.getCode() == 310) {
                            if (bean.getResult().getVersionName() != null && Double.parseDouble(bean.getResult().getVersionName())<=(Double.parseDouble(getAppVersion(SplashActivity.this)))) {
                                showSplashScreen();
                            } else {
                                AlertDialog.Builder builder = new AlertDialog.Builder(SplashActivity.this, R.style.DatePickerTheme);
                                builder.setTitle(getString(R.string.new_version_available));
                                builder.setMessage(getString(R.string.upgrade_to_new_version));
                                builder.setPositiveButton(getString(R.string.update), (dialogInterface, i) -> redirectStore("https://play.google.com/store/apps/details?id=com.shopoholic"));
                                if (bean.getResult().getUpdateType() != null && bean.getResult().getUpdateType().equals("1")) {
                                    builder.setNegativeButton(getString(R.string.no_thanks), (dialogInterface, i) -> showSplashScreen());
                                }
                                builder.setCancelable(false);
                                builder.show();
                            }
                        } else {
                            showSplashScreen();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        showSplashScreen();
                    }

                }
@FormUrlEncoded
@POST(“检查版本”)
调用hitCheckVersionApi(@FieldMap HashMap-map);
实现代码为:

  @FormUrlEncoded
    @POST("checkversion")
    Call<ResponseBody> hitCheckVersionApi(@FieldMap HashMap<String, String> map);
 private void checkForceUpdateAPI() {
        if (AppUtils.getInstance().isInternetAvailable(this)) {
            final HashMap<String, String> params = new HashMap<>();
            params.put(Constants.NetworkConstant.PARAM_VERSION_NAME, getAppVersion(this));
            params.put(Constants.NetworkConstant.PARAM_PLATFORM, "1");
            params.put(Constants.NetworkConstant.PARAM_APP_TYPE, "2");
            ApiInterface apiInterface = RestApi.createService(this, ApiInterface.class);
            Call<ResponseBody> call = apiInterface.hitCheckVersionApi(params);
            ApiCall.getInstance().hitService(this, call, new NetworkListener() {
                @Override
                public void onSuccess(int responseCode, String response, int requestCode) {
                    try {
                        VersionUpdateResponse bean = new Gson().fromJson(response, VersionUpdateResponse.class);
                        if (bean.getCode() == 310) {
                            if (bean.getResult().getVersionName() != null && Double.parseDouble(bean.getResult().getVersionName())<=(Double.parseDouble(getAppVersion(SplashActivity.this)))) {
                                showSplashScreen();
                            } else {
                                AlertDialog.Builder builder = new AlertDialog.Builder(SplashActivity.this, R.style.DatePickerTheme);
                                builder.setTitle(getString(R.string.new_version_available));
                                builder.setMessage(getString(R.string.upgrade_to_new_version));
                                builder.setPositiveButton(getString(R.string.update), (dialogInterface, i) -> redirectStore("https://play.google.com/store/apps/details?id=com.shopoholic"));
                                if (bean.getResult().getUpdateType() != null && bean.getResult().getUpdateType().equals("1")) {
                                    builder.setNegativeButton(getString(R.string.no_thanks), (dialogInterface, i) -> showSplashScreen());
                                }
                                builder.setCancelable(false);
                                builder.show();
                            }
                        } else {
                            showSplashScreen();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        showSplashScreen();
                    }

                }
private void checkForceUpdateAPI(){
if(AppUtils.getInstance().isInternetAvailable(此)){
final HashMap params=new HashMap();
params.put(Constants.NetworkConstant.PARAM_VERSION_NAME,getAppVersion(this));
参数put(Constants.NetworkConstant.PARAM_平台,“1”);
参数put(Constants.NetworkConstant.PARAM_APP_TYPE,“2”);
ApiInterface ApiInterface=RestApi.createService(这个,ApiInterface.class);
Call Call=apiInterface.hitCheckVersionApi(参数);
ApiCall.getInstance().hitService(此,调用,新NetworkListener()){
@凌驾
成功时的公共void(int-responseCode、String-response、int-requestCode){
试一试{
VersionUpdateResponse bean=new Gson().fromJson(响应,VersionUpdateResponse.class);
if(bean.getCode()==310){
如果(bean.getResult().getVersionName()!=null&&Double.parseDouble(bean.getResult().getVersionName())重定向存储(“https://play.google.com/store/apps/details?id=com.shopoholic"));
如果(bean.getResult().getUpdateType()!=null&&bean.getResult().getUpdateType().equals(“1”)){
setNegativeButton(getString(R.string.no_,谢谢),(dialogInterface,i)->showSplashScreen());
}
builder.setCancelable(false);
builder.show();
}
}否则{
showSplashScreen();
}
}捕获(例外e){
e、 printStackTrace();
showSplashScreen();
}
}

我在发布版本中遇到了相同的问题。添加proguard规则将解决此问题。
如果您在调试生成中遇到此错误,则说明您的代码有问题。

这是在调试模式还是在发布模式下发生的?请告诉我错误原因?Apk不是生成。如果这是在发布模式下发生的,则原因可能是Proguard,您需要将规则添加到Proguard文件中。如果是在调试模式下发生的,则原因可能是不同。请告诉我两种解决方案