Данные JSON не были полностью использованыAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Данные JSON не были полностью использованы

Сообщение Anonymous »

При отправке изображения с использованием multipart с использованием библиотеки модификации возникает эта ошибка.
Я проверил множество решений, доступных в Stack Overflow, но ни одно из них мне не помогло. >
Здесь я предоставляю вам свой код:

Код: Выделить всё

public class ApiHandler {

private static final String BASE_URL = "https://aaplasevak.com/";

private static Retrofit retrofit;

public static Retrofit getRetrofitInstance() {

if(retrofit == null){

OkHttpClient client = new OkHttpClient.Builder().build();

Gson gson = new GsonBuilder().setLenient().create();

retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}

return retrofit;
}

}

Мой класс интерфейса API

Код: Выделить всё

    @Multipart
@POST("whatsapp_api.php")
Call sentWhatsAppMessage(
@Part("series_id") RequestBody seriesId,
@Part("colony_id") RequestBody  colonyId,
@Part("row_id") RequestBody  rowId,
@Part("watersupply_id") RequestBody  waterSupplyId,
@Part("constituency") RequestBody  constituency,
@Part("city_village") RequestBody  cityVillage,
@Part("zone") RequestBody  zone,
@Part("prabhag_ward") RequestBody  prabhagWard,
@Part("template_desc") RequestBody  templateDesc,
@Part MultipartBody.Part file
);
Код реализации API

Код: Выделить всё

private void sentWhatsAppMessage() {
ApiInterface apiInterface = getRetrofitInstance().create(ApiInterface.class);

RequestBody seriesId = RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(spinner_series.getSelectedItemPosition()));
RequestBody colonyId = RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(spinner_colony.getSelectedItemPosition() + 1));
RequestBody rowId = RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(spinner_row.getSelectedItemPosition() + 1));
RequestBody waterSupplyId = RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(spinner_water_Supply.getSelectedItemPosition()));
RequestBody zoneId = RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(spinner_zone.getSelectedItemPosition()));
RequestBody wardId = RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(spinner_ward.getSelectedItemPosition()));
RequestBody constituencyId = RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(spinner_constituency.getSelectedItemPosition()));
RequestBody cityVillageId = RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(spinner_city_village.getSelectedItemPosition()));
RequestBody message = RequestBody.create(MediaType.parse("multipart/form-data"),  etMessage.getText().toString());

File file = new File(getRealPathFromURI(selectedUri));
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), requestFile);

Call call = apiInterface.sentWhatsAppMessage(seriesId,colonyId,rowId,waterSupplyId,constituencyId,cityVillageId,zoneId,wardId,message,body);
//Log.d("Api Response", "WhatsApp: " + whatsAppApiBody.toString());

call.enqueue(new Callback() {
@Override
public void onResponse(Call call, retrofit2.Response response) {
if (response.isSuccessful()) {
WhatsAppApiResponseData responseData = response.body();
String status = responseData.toString();
Toast.makeText(WhatsappActivity.this, "Success!! " + status, Toast.LENGTH_SHORT).show();
Log.d("Api Response","data: "  + status);
finish();
} else {
Toast.makeText(WhatsappActivity.this, "Response Error..!!", Toast.LENGTH_SHORT).show();
Log.e("Api Response", "Response Error..");
}
}

@Override
public void onFailure(Call call, Throwable throwable) {
Log.e("Api Response", "Error.." + throwable.getLocalizedMessage());
Toast.makeText(WhatsappActivity.this, "Error.." + throwable.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
throwable.printStackTrace();
}
});

}
функция getRealPathFromUri

Код: Выделить всё

 private String getRealPathFromURI(Uri contentUri) {

String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(contentUri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String filePath = cursor.getString(column_index);
cursor.close();
return filePath;

}

При тестировании с помощью API Postman все работает нормально, но здесь я сталкиваюсь с проблемой, которая всегда отображается:

Данные Json не были использованы полностью


Подробнее здесь: https://stackoverflow.com/questions/787 ... y-consumed
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»