Возникают проблемы с получением ответа от сервлета в J2ME - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь получить ответ от сервлета на мидлет, используя код ниже

public String receiveData() {
        HttpConnection connection = null;
        String url = "http://localhost:8084/MCastServer/Create";
        DataInputStream is = null;
        OutputStream os = null;
        StringBuffer stringBuffer = new StringBuffer();
        String res = null;
        try {
            connection = (HttpConnection) Connector.open(url);
            connection.setRequestMethod(HttpConnection.GET);
            connection.setRequestProperty("IF-Modified-Since", "20 Jan 2001 16:19:14 GMT");
            connection.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Confirguration/CLDC-1.0");
            connection.setRequestProperty("Content-Language", "en-CA");
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            os = connection.openOutputStream();
            is = connection.openDataInputStream();
            System.out.println(url);
            int ch = 0;
            while ((ch = is.read()) == -1) {
                stringBuffer.append((char) ch);
                System.out.println(stringBuffer);
            }
            res = stringBuffer.toString();
            System.out.println(res);
            //ByteArrayOutputStream bos = new ByteArrayOutputStream();
        } catch (Exception e) {
        } finally {
            try {
                if (is != null) {
                    is.close();
                }
                if (os != null) {
                    os.close();
                }
                if (connection != null) {
                    connection.close();

                }
                //display.setCurrent(textBox);
            } catch (Exception e) {
            }

        }
        return res;
    }

Но он продолжает возвращать нулевой вывод. Я искал и пробовал различные способы, но он все еще возвращает то же самое. Ниже сервлет, который я написал

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/plain");
        PrintWriter out = response.getWriter();

        String groupNames = "SELECT phone_group_name FROM phone_group_name";
        InteractToDB dbCall = new InteractToDB("org.postgresql.Driver");
        dbCall.connect("jdbc:postgresql://localhost:5432/mcast", "postgres", "mimi");
        out.print(dbCall.getNames());
        System.out.println(dbCall.getNames() + " call");
        try {

        } finally {
            out.close();
        }
    }

1 Ответ

2 голосов
/ 10 февраля 2012

У вас есть пустой блок catch - это не очень хорошая идея. Вы должны напечатать трассировку стека как минимум.

Мне также кажется ужасной идея поместить код базы данных в сервлет. Я написал бы основанный на интерфейсе POJO, тщательно протестировал код без сервлета, а затем вызвал бы его методы в сервлете. Он разбивает проблему на более мелкие и помогает вашим юнит-тестам.

Почему вы создаете соединение для каждого запроса? Почему вы не используете пул соединений для амортизации затрат на создание соединений?

Почему вы жестко связываете свою информацию простым текстом в классе? Что произойдет, если dbCall равно нулю? Что если бросить SQLException?

Чем больше я смотрю на этот код, тем хуже он становится. Я лучше остановлюсь сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...