Как отправить изображение из веб-сервиса в Spring

Я столкнулся с проблемой при отправке изображения с помощью Spring Web Service.

Я написал контроллер как показано ниже

@Controller
public class WebService {

    @RequestMapping(value = "/image", headers = "Accept=image/jpeg, image/jpg, image/png, image/gif", method = RequestMethod.GET)
    public @ResponseBody byte[] getImage() {
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("myimage.jpg");
            BufferedImage bufferedImage = ImageIO.read(inputStream);
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ImageIO.write( bufferedImage  , "jpg", byteArrayOutputStream);
            return byteArrayOutputStream.toByteArray();

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

@ResponseBody преобразует ответ в JSON.

Я использую RestClient для тестирования веб-сервиса.

Но когда я попадаю на http://localhost:8080/my-war-name/rest/image URL.

Header 
Accept=image/jpg

я сталкиваюсь со следующей ошибкой на RestClient

Преобразование тела ответа в строку с использованием кодировки windows-1252 не удалось. Тело ответа не установлено!

Когда я использую браузеры Chrome и Firefox

Заголовки не добавлены, поэтому ожидается ошибка (пожалуйста, подскажите мне, что делать)

HTTP Status 405 - Request method 'GET' not supported

type Status report

message Request method 'GET' not supported

description The specified HTTP method is not allowed for the requested resource (Request method 'GET' not supported).

Я также столкнулся со следующей ошибкой

Ресурс, идентифицированный этим запросом, способен только генерировать ответы с характеристиками, неприемлемыми в соответствии с заголовками запроса "accept" ()

Я проследовал по адресу http://krams915.blogspot.com/2011/02/spring-3-rest-web-service-provider-and.html tutorial.

Моя задача - отправить изображение в байтовом формате на Android-клиент.

10
задан skaffman 28 December 2011 в 12:48
поделиться