/ / Wysyłanie obrazów za pomocą AndroidAnnotacje RestService - android, wiosna, android-adnotacje

Wysyłanie obrazów z AndroidAnnotations RestService - adnotacje z Androidem, wiosną i androidem

Jaki jest najlepszy sposób wysłania pliku przy użyciu usługi RestService? Mam obraz, który muszę wysłać na serwer.

Interfejs API oczekuje następujących danych POST:

image -> image I want to send
description -> text
title -> text

Czy mogę po prostu wysłać obiekt z wartościami potrzebnymi do osiągnięcia tego, czy muszę to zrobić w inny sposób?

class NewImage {
private Bitmap image;
private String description;
private String title;
}

Odpowiedzi:

2 dla odpowiedzi № 1

Należy użyć wieloczęściowego żądania POST:

Klient:

@Rest(rootUrl = "your_url", converters = FormHttpMessageConverter.class)
public interface UploadClient extends RestClientHeaders {
@Post("/Image/{id}")
@RequiresHeader(HttpHeaders.CONTENT_TYPE)
String uploadImage(int id, MultiValueMap<String, Object> data);
}

Stosowanie:

MultiValueMap<String, Object> data = new LinkedMultiValueMap<>();

FileSystemResource image = new FileSystemResource("path_to_image");
String description = "description";
String title = "title";

data.put("image", image);
data.put("description", description);
data.put("title", title);

client.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE);

client.uploadImage(1, data);

Wiem, że to ma jakiś kocioł, ale tak będzie ulepszony w niedalekiej przyszłości.

Zastanów się nad pytaniem w komentarzu:

Możesz stworzyć klasę:

class ObjectSupportingFormHttpMessageConverter extends FormHttpMessageConverter {
public ObjectSupportingFormHttpMessageConverter() {
addPartConverter(new ObjectToStringHttpMessageConverter(new DefaultConversionService()));
}
}

Następnie użyj go jako konwertera. Spowoduje to konwersję obiektów na części tekstowe / zwykłe. Być może jednak lepiej jest serializować tę złożoną strukturę do JSON zamiast wysyłać ją w postu wieloczęściowym.