2014-04-13 144 views
0

我試圖上傳一張圖片以及關於圖片的其他數據,但沒有運氣。我嘗試了很多變化,並總是以java.lang.ClassCastException: org.springframework.core.io.FileSystemResource cannot be cast to java.lang.String結束。我如何使用AndroidAnnotations/Android Spring將圖像發佈到我的服務器?AndroidAnnotations RestService Post Image

@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

FormHttpMessageConverter處理Resources亞類(像FileSystemResource)。並且您的MultiValueMap將值定義爲Object作爲值類型。所以,這應該起作用。

兩件事情,那麼:

  • 你調整的FormHttpMessageConverter配置?
  • 你可以給我們完整的堆棧嗎?
0

就遇到了這個問題,通過明確界定的REST接口

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

內的一般類型的MultiValueMap的固定也一定要包括任何其他適當的轉換器。您將需要用於FileResource的ByteArrayHttpMessageConverter.class,並且至少需要StringHttpMessageConverter.class將額外的信息轉換爲字符串。