Ошибка при вводе изображения файла на retrofit2, показывая IllegalStateException на gson - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь загрузить файл (изображение) на сервер с помощью Retrofit 2. Я следую приведенному уроку, но все равно получаю ошибку.

Вот ответ об ошибке: D / Failed: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: ожидается BEGIN_OBJECT, но в строке 1 путь 1 столбца 1 $

имеет значение STRING

Вот мой код: Call call = RetrofitClient .getInstance (). getApi (). loginAndroid (имя пользователя, пароль);

    //Toast.makeText(LoginActivity.this, "Login Success", Toast.LENGTH_LONG).show();
    call.enqueue(new Callback<LoginResponse>() {
        @Override
        public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
            LoginResponse loginResponse = response.body();
            int Responsecode = response.code();
           if(Responsecode != 200)
           {
               try {
                   JSONObject jObjError = new JSONObject(response.errorBody().string());
                   Log.d("login", String.valueOf(jObjError));
                   Toast.makeText(LoginActivity.this, jObjError.getString("message"), Toast.LENGTH_SHORT).show();
               } catch (JSONException e) {
                   e.printStackTrace();
               } catch (IOException e) {
                   e.printStackTrace();
               }
               //Toast.makeText(LoginActivity.this, "Email / Password Salah", Toast.LENGTH_LONG).show();
           } else {
               Log.d("response", response.body().toString());
               SharedPrefManager.getInstance(LoginActivity.this)
                       .saveUser(loginResponse.getData());
               Toast.makeText(LoginActivity.this, "Login Success", Toast.LENGTH_LONG).show();

               Intent intent = new Intent(LoginActivity.this, AdminHomeActivity.class);
               intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
               startActivity(intent);
                //Log.d("shared",SharedPrefManager.getInstance(LoginActivity.this).getUser().getNama().toString());
            }

Это моя модель: private int id; приватная строка имя пользователя, имя, роль, ветка;

public User(int id, String username, String nama, String role, String branch)
{
    this.id = id;
    this.username = username;
    this.nama = nama;
    this.role = role;
    this.branch = branch;
}

public int getId() {
    return id;
}

public String getUsername() {
    return username;
}

public String getNama() {
    return nama;
}

public String getRole() {
    return role;
}

public String getBranch() {
    return branch;
}

public void setId(int id) {
    this.id = id;
}

public void setUsername(String username) {
    this.username = username;
}

public void setNama(String nama) {
    this.nama = nama;
}

public void setRole(String role) {
    this.role = role;
}

public void setBranch(String branch) {
    this.branch = branch;
}

А вот мой вызов API:

@Multipart
@POST("sparepart")
Call<SparepartResponse> addSparepart(
        @Part("id") String id,
        @Part("nama") String nama,
        @Part("merk") String merk,
        @Part("harga_beli") Integer hargaBeli,
        @Part("harga_jual") Integer hargaJual,
        @Part("stok") Integer stok,
        @Part("stok_minimal") Integer stokMinimal,
        @Part("penempatan") String penempatan,
        @Part MultipartBody.Part gambar,
        @Part("id_sparepart_type") Integer idSparepartType
        );

В любом случае, я новичок в модернизации, любая помощь? Спасибо

...