使用AndroidAnnotations RestService

时间:2015-06-17 12:07:34

标签: android spring android-annotations

使用RestService发送文件的最佳方法是什么?我有一个我必须发送到服务器的图像。

API需要以下POST数据:

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

我可以发送一个具有所需值的对象来实现这一目标,还是我必须采取另一种方式?

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

1 个答案:

答案 0 :(得分:2)

您应该使用多部分POST请求:

客户端:

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);

用法:

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

我知道这有一些样板,但在不久的将来会是improved

在评论中反思这个问题:

您可以创建一个类:

{{1}}

然后将其用作转换器。这会将您的对象转换为text / plain部分。但是,也许最好将这个复杂的结构序列化为JSON,而不是在多部分帖子中发送它。