我尝试上传图片以及有关图片的其他数据,但没有运气。我尝试了很多变化,但总是以java.lang.ClassCastException: org.springframework.core.io.FileSystemResource cannot be cast to java.lang.String
结束。如何使用AndroidAnnotations / Android Spring将图像发布到我的服务器?
@Rest(rootUrl = "http://api.me.com/v1", converters = FormHttpMessageConverter.class)
public interface CheckInService {
@Post("/stuff/{id}/schedule")
void checkIn(String id, MultiValueMap schedule);
}
致电代码:
MultiValueMap<String, Object> values = new org.springframework.util.LinkedMultiValueMap<String,Object>();
values.add("image", new FileSystemResource(_selectedImageUri.getPath()));
values.add("departure", schedule.departure.getTime());
values.add("arrival", schedule.arrival.getTime());
values.add("location[latitude]", schedule.location.latitude);
values.add("location[longitude]", schedule.location.longitude);
_checkInService.checkIn(id, values);
答案 0 :(得分:0)
FormHttpMessageConverter
处理Resources
个子类(如FileSystemResource
)。您的MultiValueMap
将Object
定义为值类型。所以,这应该有效。
然后有两件事:
FormHttpMessageConverter
?答案 1 :(得分:0)
进入这个问题,通过在Rest接口中显式定义MultiValueMap的泛型类型来修复它
@Rest(rootUrl = "http://api.me.com/v1", converters = {FormHttpMessageConverter.class
StringHttpMessageConverter.class, ByteArrayHttpMessageConverter.class})
public interface CheckInService {
@Post("/stuff/{id}/schedule")
void checkIn(String id, MultiValueMap<String, Object> schedule);
}
还要确保包含任何其他适当的转换器。您将需要FileResource的ByteArrayHttpMessageConverter.class和至少StringHttpMessageConverter.class将额外信息转换为字符串。