2012-02-24 2 views
0

Я сделал простое приложение для входа в j2me, код ниже.телефон для обмена сервлетом через bluetooth с помощью j2me

Он отлично работает на эмуляторе, теперь я хочу запустить его в своем мобильном приложении через соединение Bluetooth. Другими словами, телефон (приложение j2me) -pc (servlet) через bluetooth. Нужна помощь.

обновление устройство поддерживает JSR 82 Java API для Bluetooth 1.1.

package hello; 

import javax.microedition.lcdui.*; 
import javax.microedition.midlet.*; 
import javax.microedition.io.*; 
import java.io.*; 
import java.util.Vector; 

public class MidletServlet extends MIDlet implements CommandListener { 
    Display display = null; 
    Form form = null; 
    TextField tb = null,tb1= null; 
    String str = null; 
    String url = "http://localhost:8084/j2metest/getText"; 
    Command backCommand = new Command("Back", Command.BACK, 0); 
    Command submitCommand = new Command("Submit", Command.OK, 2); 
    Command exitCommand = new Command("Exit", Command.STOP, 3); 
    private Test test; 

    public MidletServlet() {} 

    public void startApp() throws MIDletStateChangeException { 
     display = Display.getDisplay(this); 
     form = new Form("Request Servlet"); 
     tb = new TextField("Username: ","",30,TextField.ANY); 
     tb1 = new TextField("Password: ","",30,TextField.ANY); 
     form.append(tb); 
     form.append(tb1); 
     form.addCommand(submitCommand); 
     form.addCommand(exitCommand); 
     form.setCommandListener(this); 
     display.setCurrent(form); 
    } 

    public void pauseApp() {} 

    public void destroyApp(boolean unconditional) {} 

    public void commandAction(Command c, Displayable d) { 
     if (c == exitCommand) { 
      destroyApp(true); 
      notifyDestroyed(); 
     } else if (c == backCommand) { 
      display.setCurrent(form); 
     } else if (c == submitCommand) { 
      test = new Test(this); 
      test.start(); 
      test.getServlet(tb.getString(),tb1.getString()); 
     } 
    } 
    class Test implements Runnable { 
     MidletServlet midlet; 
     private Display display; 
     String pass; 
     String user; 

     public Test(MidletServlet midlet) { 
      this.midlet = midlet; 
      display = Display.getDisplay(midlet); 
     } 

     public void start() { 
      Thread t = new Thread(this); 
      t.start(); 
     } 

     public void run() { 
      StringBuffer sb = new StringBuffer(); 
      try { 
       HttpConnection c = (HttpConnection) Connector.open(url); 
       c.setRequestProperty(
        "User-Agent","Profile/MIDP-2.1, Configuration/CLDC-1.1"); 

       c.setRequestProperty("Content-Language","en-US"); 
       c.setRequestMethod(HttpConnection.POST); 

       DataOutputStream os = 
         (DataOutputStream)c.openDataOutputStream(); 

       os.writeUTF(user.trim()); 
       os.writeUTF(pass.trim()); 
       os.flush(); 
       os.close(); 

       // Get the response from the servlet page. 
       DataInputStream is =(DataInputStream)c.openDataInputStream(); 
       //is = c.openInputStream(); 
       int ch; 
       sb = new StringBuffer(); 
       while ((ch = is.read()) != -1) { 
        sb.append((char)ch); 
       } 
       showAlert(sb.toString()); 
       is.close(); 
       c.close(); 
      } catch (Exception e) { 
       showAlert(e.getMessage()); 
      } 
     } 
       /* This method takes input from user like text and pass 
       to servlet */ 
     public void getServlet(String user,String pass) { 
      this.user = user; 
      this.pass=pass; 
     } 

     /* Display Error On screen*/ 
     private void showAlert(String err) { 
      Alert a = new Alert(""); 
      a.setString(err); 
      a.setTimeout(Alert.FOREVER); 
      display.setCurrent(a); 
     } 
    }; 
} 

и это мой сервлет код

package my; 
import java.sql.*; 
import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* 
* @author vicky 
*/ 
import java.io.*; 
import java.text.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class getText extends HttpServlet { 

    public void init() { 
    } 

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

     DataInputStream in = 
       new DataInputStream((InputStream)request.getInputStream()); 

     String user = in.readUTF(); 
     String pass=in.readUTF(); 
     String text=""; 
     try { 

      Class.forName("oracle.jdbc.driver.OracleDriver"); 
       Connection conn= DriverManager.getConnection(
       "jdbc:oracle:thin:@localhost:1521:XE","vicky","1"); 
       Statement stmt=conn.createStatement(); 
       ResultSet rs;int f=0; 
      rs=stmt.executeQuery("select * from ADMIN"); 
      //s1=request.getParameter("un"); 
      //s2=request.getParameter("pw"); 

      if(user==""||pass=="") 
       { 
        text="Username and Password are required for login;"; 
       } 
      else 
       { 
       //session.setAttribute("uname",s1); 
       while(rs.next()) 
        { 
        String s3=rs.getString(1); 
        String s4=rs.getString(2); 
        if (user.equals(s3)&&pass.equals(s4)) 
         { 
          f=1; 
         } 
       } 
       if(f==1) 
        { 
        //response.sendRedirect("success.jsp"); 
        //out.print(s1); 
       text="Login Successful"; 
           } 
       else 
        { 
        //out.print("ERROR"); 
        text="Login Failure"; 
           } 
       } 
      } 
     catch(Exception e) 
     { 
     //out.print("ERROR"+e); 
     text="error"+e; 
      } 
     response.setContentType("text/plain"); 
     response.setContentLength(text.length()); 
     PrintWriter out = response.getWriter(); 

     out.print(text); 


     in.close(); 
     out.close(); 
     out.flush(); 
    } 

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

     doPost(request,response); 
    } 
} 
+1

поддерживает ли ваше устройство [JSR 82 Java API для Bluetooth] (http://www.jcp.org/en/jsr/detail?id=82)? – gnat

+0

да, он поддерживает JSR 82 Java API для Bluetooth 1.1 –

+0

@gnat, пожалуйста, скажите мне решение моей проблемы .. –

ответ

0

Я думаю, что это то, где актуальна проблема, просто измените ваш String url = "http://localhost:8084/j2metest/getText"; на IP своего компьютера, как 192.168.1.1 рода, а затем повторите попытку.

Причина этого в том, что при запуске кода Java ME на эмуляторе он обнаруживает localhost. Но теперь, когда вы развернули это приложение на мобильном устройстве и подключили его к Bluetooth, вы получаете доступ к компьютеру извне, поэтому в этом случае localhost не будет работать. вам нужно передать свой IP-адрес.

+0

так, в этом случае это должно быть как 'http://192.168.1.23/j2metest/ getText; 'я прав ... ?? Но это общедоступный ip (LAN), который недоступен через Интернет. С другой стороны, мне нужно взаимодействие через bluetooth. И, спасибо за ваш ответ .. !! –

+0

да, вы правы, просто поставьте эту строку ip и попробуйте еще раз. Я на 1000% уверен, что 192.168.1.23 не будет доступен через Интернет. в Интернете он может иметь еще один живой IP-адрес. – Android

+0

Можете ли вы привести мне какой-либо пример, мой live ip - 117.224.102.39, и я сделал строку как 'http: // 117.224.102.39/j2metest/getText', но она недоступна. Я имею в виду, что Google говорит: «Ой! Google Chrome не смог подключиться к 117.224.102.39'. –

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