Android - использование Httppost для передачи некоторых данных из приложений Android в сервлет, но в сервлете оно становится нулевым - PullRequest
3 голосов
/ 22 февраля 2012
//Here is my Eclipse, suppose i already get the heartvalue and oxygenvalue in other method call
private OnClickListener upload = new OnClickListener()
{
    public void onClick(View v)
    {
        ArrayList<NameValuePair> namevaluepairs = new ArrayList<NameValuePair>(2);
        namevaluepairs.add(new BasicNameValuePair("o2",oxygenvalue));
        namevaluepairs.add(new BasicNameValuePair("heart",heartvalue));
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://www2.comp.polyu.edu.hk:8080/08065312D/servlet/ServletTest"); 
            httppost.setEntity(new UrlEncodedFormEntity(namevaluepairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            Log.d("d", response.toString());
            InputStream is = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            String reading = sb.toString();
            TextView lbl = (TextView) findViewById(R.id.test4);
            lbl.setText(reading);
        } catch (Exception e) {
        }

// Вот мой сервлет

открытый класс FypServletTest расширяет HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        Connection con = null;
        Statement stmt = null;
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(
                    "jdbc:mysql://mysql.comp.polyu.edu.hk:3306/", "08065312d", "xxxx");
            stmt = con.createStatement();
            stmt.execute("USE 08065312d");
            String id = "2";
            String oxygenvalue = request.getParameter("o2");
            String heartvalue = request.getParameter("heart");
            stmt = con.createStatement();
            String query="insert into Test values('"+id+"','"+oxygenvalue+"','"+heartvalue+"');";
            int rs = stmt.executeUpdate(query);
            out.flush();
            out.close();

        }
          catch(Exception ex)
            {

            }

} }

// Я могу успешно добавить новую строку в БД, но параметры (чтение) становятся нулевыми. Я попытался изменить программу, напрямую напечатав println (request.getParmater ("o2")) в сервлете, но не сохранив в db, результат тоже не изменился (чтение в сервлете становится нулевым). Поэтому я сомневаюсь, что не могу передать параметр сервлету или есть проблема с методом request.getParmater, так что же происходит не так?

// У меня проблема с отправкой переменной POST, которая постоянно кажется нулевой // Я просматриваю форумы на прошлой неделе, и все примеры httppost следуют этому почти точно. Буду признателен за любую помощь, которую вы готовы оказать. Большое спасибо

1 Ответ

0 голосов
/ 29 апреля 2013

Проверьте, не является ли это проблемой с Android для начала, используя что-то вроде hackst.com , чтобы опубликовать ваш URL, а затем сообщить о нем.

...