使用 AndroidAnnotations RestService 发送图像
Sending images with AndroidAnnotations RestService
使用 RestService 发送文件的最佳方式是什么?我有一张图片必须发送到服务器。
API 需要以下 POST 数据:
image -> image I want to send
description -> text
title -> text
我可以只发送一个具有所需值的对象来实现这一点,还是我必须以其他方式来实现?
class NewImage {
private Bitmap image;
private String description;
private String title;
}
您应该使用多部分 POST 请求:
客户:
@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);
}
用法:
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);
我知道这有一些样板,但在不久的将来会 improved。
针对评论中的问题进行反思:
您可以创建 class:
class ObjectSupportingFormHttpMessageConverter extends FormHttpMessageConverter {
public ObjectSupportingFormHttpMessageConverter() {
addPartConverter(new ObjectToStringHttpMessageConverter(new DefaultConversionService()));
}
}
然后将其用作转换器。这会将您的对象转换为 text/plain 部分。但是,也许最好将这个复杂结构序列化为 JSON 而不是在多部分 post.
中发送它
使用 RestService 发送文件的最佳方式是什么?我有一张图片必须发送到服务器。
API 需要以下 POST 数据:
image -> image I want to send
description -> text
title -> text
我可以只发送一个具有所需值的对象来实现这一点,还是我必须以其他方式来实现?
class NewImage {
private Bitmap image;
private String description;
private String title;
}
您应该使用多部分 POST 请求:
客户:
@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);
}
用法:
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);
我知道这有一些样板,但在不久的将来会 improved。
针对评论中的问题进行反思:
您可以创建 class:
class ObjectSupportingFormHttpMessageConverter extends FormHttpMessageConverter {
public ObjectSupportingFormHttpMessageConverter() {
addPartConverter(new ObjectToStringHttpMessageConverter(new DefaultConversionService()));
}
}
然后将其用作转换器。这会将您的对象转换为 text/plain 部分。但是,也许最好将这个复杂结构序列化为 JSON 而不是在多部分 post.
中发送它