у нас есть API, который получает параметры в виде json / application. У меня есть класс Object, и я хочу отправить параметры в виде json и добавить этот API с модификацией 2. Но у меня есть исключение
java.lang.IllegalArgumentException: невозможно создать конвертер @Body для класса com.account.sampark.ledger.model.UserRegister (параметр # 1)
public class UserRegister {
private String firstName;
private String lastName;
private String phone1;
private String phone2;
private String emailId;
private String passwd;
private String token;
private int roleId;
public UserRegister(String firstName, String lastName, String phone1, String phone2, String emailId, String passwd, String token) {
this.firstName = firstName;
this.lastName = lastName;
this.phone1 = phone1;
this.phone2 = phone2;
this.emailId = emailId;
this.passwd = passwd;
this.token = token;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
public int getRoleId() {
return roleId;
}
}
ApiClient
public class ApiClient {
public static final String BASE_URL = ApiUrls.BASE_URL;
public static Retrofit retrofit = null;
public static Retrofit getApiClient() {
if (retrofit == null) {
Timber.plant(new Timber.DebugTree());
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
Timber.i(message);
}
});
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(loggingInterceptor)
.connectTimeout(3000, TimeUnit.SECONDS).build();
retrofit = new Retrofit.Builder().baseUrl(BASE_URL).
client(client).addConverterFactory(LoganSquareConverterFactory.create()).build();
}
return retrofit;
}
}
@Headers("Content-Type: application/json")
@POST(USER + ApiUrls.CREATE)
Call<UserRole> registerUser(@Body UserRegister parm);
И я звоню отсюда
Call<UserRole> call = apiMobile.registerUser(params);
Исключение
Process: com.account.sampark.ledger, PID: 8334
java.lang.IllegalArgumentException: Unable to create @Body converter for class com.account.sampark.ledger.model.UserRegister (parameter #1)
for method ApiMobile.registerUser
at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:755)
at retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod.java:760)
at retrofit2.ServiceMethod$Builder.parseParameterAnnotation(ServiceMethod.java:716)
at retrofit2.ServiceMethod$Builder.parseParameter(ServiceMethod.java:339)
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:207)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
at java.lang.reflect.Proxy.invoke(Proxy.java:813)
at $Proxy0.registerUser(Unknown Source)
at com.account.sampark.ledger.ui.common.fragment.FragmentRegistrationForm$3.onClick(FragmentRegistrationForm.java:118)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6221)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
Caused by: java.lang.IllegalArgumentException: Could not locate RequestBody converter for class com.account.sampark.ledger.model.UserRegister.
Tried:
* retrofit2.BuiltInConverters
* com.github.aurae.retrofit2.LoganSquareConverterFactory
at retrofit2.Retrofit.nextRequestBodyConverter(Retrofit.java:303)
at retrofit2.Retrofit.requestBodyConverter(Retrofit.java:262)
at retrofit2.ServiceMethod$Builder.parseParameterAnnotation(ServiceMethod.java:713)
... 14 more
Я пытался удалить @Headers ("Content-Type: application / json"), но у меня не получилось. См. Мой API json / application здесь