Доступ к необработанным данным тела http-запроса

Я пытаюсь реализовать веб-приложение, используя игровую инфраструктуру в качестве замены старой реализации http-сервера, которая взаимодействует со старым устаревшим http-клиентом без браузера.

Этот клиент написан на Delphi и отправляет данные непосредственно в тело запроса с некоторой информацией о заголовке.

Я думал, что я что-то получить в

request.body /* In the play controller */

но там ничего нет.

См. код ниже:

public static void uploadPicture() {

        InputStream data = request.body;
    String fx = Play.getFile("").getAbsolutePath()+File.separator+"uploads"+File.separator+"test.jpg";
        File f = new File(fx);
        FileOutputStream moveTo = new FileOutputStream(fx);
        try {
                byte[] b = new byte[4096];
                for (int x = 0; (data.read(b)) != -1;){
                    moveTo.write(b, 0, x);
            }
        } finally{
            moveTo.close();
        }

    } 

EDIT: Чтобы уточнить мою точку зрения: я пошел и создал простой динамический веб-проект в eclipse HttpServlet, а в методе doPost(), когда я получаю request.getInputStream(), он содержит файл, отправленный из устаревшего клиента.

Play что-то делает с телом запроса!?

Каковы мои варианты?

Спасибо.

Ирфан


person Irfan Mulic    schedule 01.11.2012    source источник
comment
Вы уверены, что проблема не где-то еще (т.е. корявая реализация в устаревшем клиенте)? Я использую request.body, и он работает как положено.   -  person Samuel    schedule 02.11.2012
comment
@Samuel Определенно, реализация на клиенте очень проста, у него есть имя файла в заголовке, а в теле это файл. Я пошел и создал простой сервлет, и когда я получаю request.getInputStream() и сохраняю его в файл, файл правильный. Я предполагаю, что игра что-то делает с первоначальным запросом?!   -  person Irfan Mulic    schedule 02.11.2012
comment
Хорошо, это была ошибка в Play 1.2.4. Установил последнюю версию 1.2.5 и все работает из коробки. Спасибо !   -  person Irfan Mulic    schedule 03.11.2012


Ответы (1)


Хорошо, это была ошибка в Play 1.2.4. Установил последнюю версию 1.2.5 и все работает из коробки.

Вы можете получить доступ к необработанному телу запроса в request.body в контроллере.

person Irfan Mulic    schedule 02.11.2012