2015-08-04 3 views
1

Я полный новичок в веб-программировании. Я создал приложение с Eclipse Java EE и сервером Tomcat, работающим в localhost.Отправлять данные в ответ doPost()?

Целью приложения является получение информации от клиента и отправка другой информации.

Я разработал сервлет и реализую метод doPost(), который отлично работает. Я получаю информацию, которую я сохранил в bean-компоненте с именем USSDPull и записываю в текстовый файл с именем log.txt.

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 


USSDPull ussdpull = new USSDPull(); 
       ussdpull.setUssdstring(request.getParameter("ussdstring")); 
       ussdpull.setSessionid(Integer.parseInt(request.getParameter("sessionid"))); 
       ussdpull.setMsisdn(request.getParameter("msisdn")); 
       ussdpull.setUssdcode(request.getParameter("ussdcode")); 
       ussdpull.setEncoding(Integer.parseInt(request.getParameter("encoding"))); 

       response.setContentType("text/text"); 
       response.setCharacterEncoding("UTF-8"); 
       PrintWriter out = response.getWriter(); 
       out.flush(); 

       out.println("POST received : " + ussdpull.getUssdstring()+" "+ussdpull.getSessionid()+" "+ussdpull.getMsisdn()+" "+ussdpull.getUssdcode()+" "+ussdpull.getEncoding()); 

       //WRITE IN FILE 
       FileWriter fw = new FileWriter("D:/Users/Username/Documents/log.txt", true); 
       BufferedWriter output = new BufferedWriter(fw); 
       output.write(dateFormat.format(date)+";"+ussdpull.getUssdstring()+";"+ussdpull.getSessionid()+";"+ussdpull.getMsisdn()+";"+ussdpull.getUssdcode()+";"+ussdpull.getEncoding()+"\n"); 
       output.flush(); 
       output.close(); 
} 

Мне нужен сервлет, чтобы отправить обратно 2 конкретных булина и 1 строку клиенту. Я не знаю, как это сделать. Можно ли использовать HttpServletResponse для отправки данных? Или мне нужно найти способ «вызвать» метод doGet()?

+0

Вы уже отправили данные в свой пример кода («POST received» и т. Д.). Какова ваша проблема? – Kayaman

+0

Я написал это только для проверки данных. Println() достаточно, чтобы действительно отправлять данные? Я думал, что это только для отображения информации в командной строке, поскольку я использовал завиток для имитации взаимодействия. Basicaly, данные поступали с устройства. Затем данные поступают в службу, и они повторно отправляются в мое приложение. Мне нужно отправить данные с сервера, чтобы сообщить службе, если я получил необходимую информацию. – Oxydroid

+0

Ну, вы отправляете обратно персональные данные, получая автоответчик и печатайте на нем. Curl просто отображает полученный ответ, если вы запустили его в браузере, вы увидите его как текст. Теперь вам решать, как вы хотите отправить свои данные. Как текстовое представление (возможно, даже JSON) или как двоичные данные (хотя с количеством данных, которые вы отправляете, очень мало). – Kayaman

ответ

0

Сам по себе HttpServletResponse не дает вам способ отправить данные обратно клиенту, отличному от некоторых заголовков, таких как код ответа.

Однако у него есть метод, называемый getOutputStream, и метод getWriter(), который дает вам соответственно. a OutputStream или PrintWriter. Вы можете использовать их для записи данных в ответ.

Смежные вопросы