Я хочу отправить форму регистрации на сервер с модификацией. Сначала у меня появляется эта ошибка:
Используйте JsonReader.setLenient (true), чтобы принять искаженный JSON в строке 1, путь 1, столбец $.
Я пытаюсь это исправитьс добавлением Gson к Retrofit.Builder вот так:
Gson gson = new GsonBuilder()
.setLenient()
.create();
return new Retrofit.Builder()
.baseUrl(AppConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
сейчас, у меня есть эта ошибка:
Ожидается BEGIN_OBJECT, нобыло STRING в строке 2 столбца 1 путь $
мой ответ сервера выглядит так:
{
"status": 1,
"message": "Successful"
}
как это исправить?
Обновление
мой интерфейс API:
public interface SignUpApi {
@Multipart
@POST("signup_profile")
Call<SignUpResponseModel> uploadFile(@Part MultipartBody.Part file,
@Part("sample_disc") RequestBody imageFile,
@Part("name") RequestBody name,
@Part("phone") RequestBody phone,
@Part("email") RequestBody email,
@Part("password") RequestBody password,
@Part("username") RequestBody username);
}
отправьте код информации и получите ответ:
RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), file.getName());
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), etName.getText().toString());
RequestBody phone = RequestBody.create(MediaType.parse("text/plain"), etPhone.getText().toString());
RequestBody email = RequestBody.create(MediaType.parse("text/plain"), etEmail.getText().toString());
RequestBody password = RequestBody.create(MediaType.parse("text/plain"), etPass.getText().toString());
RequestBody username = RequestBody.create(MediaType.parse("text/plain"), etUsername.getText().toString());
SignUpApi getResponse = AppConfig.getRetrofit().create(SignUpApi.class);
Call<SignUpResponseModel> call = getResponse.uploadFile(fileToUpload, filename, name, phone, email, password, username);
call.enqueue(new Callback<SignUpResponseModel>() {
@Override
public void onResponse(Call<SignUpResponseModel> call, Response<SignUpResponseModel> response) {
SignUpResponseModel signUpResponseModel = (SignUpResponseModel) response.body();
if (signUpResponseModel != null) {
if (signUpResponseModel.getStatus() == 1) {
startActivity(new Intent(SignupActivity.this, LoginActivity.class));
ToastMessage.showToast(context, signUpResponseModel.getMessage());
} else {
btnSend.setText(signUpResponseModel.getMessage());
}
} else {
assert signUpResponseModel != null;
}
}
@Override
public void onFailure(Call<SignUpResponseModel> call, Throwable t) {
Log.i("error", t.getMessage());
}
});
SignUpResponseModel:
public class SignUpResponseModel {
@SerializedName("status")
@Expose
private int status;
@SerializedName("message")
@Expose
private String message;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
ответ наPostMan:
введите описание изображения здесь