Итак, я хочу загрузить захват изображения с помощью поля id на моем сервере, используя многокомпонентную модификацию, но это приводит к ошибке, как будто я неправильно пишу правильный составной интерфейс, потому что журнал ошибок отображается так:
Содержание-Расположение: форма-данные; name = "ID_FSALES" Content-Transfer-Encoding: двоичный тип содержимого: application / json; charset = UTF-8 Content-Length: 12 "2001160001" --4a264851-20af-4bf8-8e85-07baf2191fb1-- -> END POST (1676-байтовое тело) W / Looper: Slow Looper main: doFrame опаздывает на 512 мс, потому что из 4 сообщений, сообщение 1 заняло 175 мс (h = android .view. Хореограф $ FrameHandler c = android .view.Choreographer $ FrameDisplayEventReceiver), сообщение 4 заняло 319 мс (позднее = 198мс h = android .app.ActivityThread $ H w = 159) D / OkHttp: <- 403 Запрещено <a href="http://192.168.43.140/flagship/api/user/uploadktp" rel="nofollow noreferrer">http://192.168.43.140/flagship/api/user/uploadktp (1063 мс). Дата: Пн, 27 января 2020 17:58:31 GMT Сервер: Apache / 2.4.39 (Win64) OpenSSL / 1.0.2r PHP / 7.1.29 X-Powered-By: PHP / 7.1.29 Set-Cook ie: ci_session = aajgtvpbqb3p08ob6t1hsv3j3v; истекает = понедельник, 27 января-2020 19:58:31 по Гринвичу; Max-Age = 7200; Путь = /; Срок действия HttpOnly истекает: четверг, 19 ноября 1981 г. 08:52:00 GMT Cache-Control: нет хранилища, нет кэша, необходимо подтвердить заново Прагма: нет кэша Content-Length: 45 Keep-Alive: время ожидания = 5, max = 100 Соединение: Keep-Alive Content-Type: application / json; charset = utf-8 D / OkHttp: {"status": false, "message": "Upload KTP Gagal"} <- END HTTP (45-байтовое тело) </p>
this моя функция загрузки:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Bitmap mphoto = (Bitmap) data.getExtras().get("data");
//panggil method uploadImage
uploadImage(mphoto);
}
}
private File createTempFile(Bitmap bitmap) {
File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES)
, System.currentTimeMillis() +"_image.jpg");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.WEBP,0, bos);
byte[] bitmapdata = bos.toByteArray();
//write the bytes in file
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(bitmapdata);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
return file;
}
private void uploadImage(Bitmap gambarBitmap) {
File file = createTempFile(gambarBitmap);
RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("FOTO_KTP", file.getName(), reqFile);
ApiInterface apiInterface = ApiClient.create();
Call<ResponseBody> call = apiInterface.uploadImage(body, idSales);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Toast.makeText(CaptureKtp.this, "Success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(CaptureKtp.this, "Gagal", Toast.LENGTH_SHORT).show();
}
});
}
public void takeImageFromCamera() {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
и это интерфейс класс:
@Multipart
@POST("api/user/uploadktp")
Call<ResponseBody> uploadImage(
@Part MultipartBody.Part file,
@Part ("ID_FSALES") String idSales
);