У меня есть эти файлы, интерфейс и процесс.
Я пытаюсь загрузить изображение на сервер, но отправляю только данные формы. Изображение пропало, не загружено. Что я сделал не так?
public interface ClientRoute {
@Multipart
@POST("attendance/in")
Call < DataAttendance > inAttendance(
@PartMap Map < String, RequestBody > partMap,
@HeaderMap Map < String, String > headers);
}
Это void
требует даты времени от стороннего API даты и времени, и в случае успеха программа выполняет процесс загрузки. Этот код работает, но только данные формы, такие как текст.
public void inAttendance(int userId, String token, int storeId, String timeAttendance, String photoPath, int refId,
double latitude, double longitude) {
timeController.getTimeaAsync("yyyy-MM-dd HH:mm:ss", false, new TimeInterface() {
@Override
public void onSuccess(@NonNull String value) {
Map < String, RequestBody > params = new HashMap < > ();
params.put("storeId", requestBody(String.valueOf(storeId)));
params.put("time_attendance", requestBody(value));
params.put("refId", requestBody(String.valueOf(refId)));
params.put("photo", RequestBody.create(MediaType.parse("image/*"), photoPath));
params.put("latitude", requestBody(String.valueOf(latitude)));
params.put("longitude", requestBody(String.valueOf(longitude)));
Map < String, String > headers = new HashMap < > ();
headers.put("userId", String.valueOf(userId));
headers.put("token", token);
clientRoute = ClientUtils.getClientRoute();
clientRoute.inAttendance(params, headers).enqueue(new Callback < DataAttendance > () {
@Override
public void onResponse(Call < DataAttendance > call, Response < DataAttendance > response) {
Log.i(TAG, "Response code: " + response.raw().code() + "\r\n" +
"Request url: " + response.raw().request().url() + "\r\n");
if (!response.isSuccessful() || response.body() == null) {
try {
Log.e(TAG, response.errorBody().string());
} catch (IOException e) {
e.printStackTrace();
}
return;
}
DataAttendance dataAttendance = response.body();
if (dataAttendance.getStatusCode() == 0) {
return;
}
Toast.makeText(context, "Attendance ID: " + dataAttendance.getStatusCode(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call < DataAttendance > call, Throwable t) {
Log.e(TAG, "onFailure: " + t);
}
});
}
@Override
public void onError(@NonNull Throwable throwable) {
}
}, false);
}
private RequestBody requestBody(String value) {
return RequestBody.create(MediaType.parse("text/plain"), value);
}
Я пытался найти недостающие параметры или опечатки, но не нашел их. Все параметры, необходимые для сервера, являются правильными. Но файл изображения не будет загружен. Кто-нибудь готов мне помочь? Я очень ценю это.