Servlet + Midlet

2 respostas
C

Meus cumprimentos a todos!!! Eh o seguinte: nao to conseguindo fazer estah servlet e midlet comunicar corretamennte segue os codigos abaixo

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import java.io.*;
public class Midlet extends MIDlet implements CommandListener,Runnable 
{
    Display display = null;
    private TextField  fieldNome,fieldEndereco,fieldTelefone,tfLogin,tfNome;
    
    private Form formCadastro,fmMain;
    private String url = "http://localhost:8084/Servlet/";
    static  String tipo="";
    static final Command sendCommand = new Command("Enviar", Command.OK, 2);
    static final Command clearCommand = new Command("Limpar", Command.STOP, 3);
    static final Command cmConectar = new Command("Conectar", Command.SCREEN, 1);   
    static final Command cmSair= new Command("Sair", Command.EXIT, 2);    
    
    String sNome,sEndereco,sTelefone,errorMsg;
    private Alert alError;   
      
    
    public Midlet() {

        display = Display.getDisplay(this);
        
        fieldNome = new TextField("Nome:", "", 25, TextField.EMAILADDR);
        fieldEndereco = new TextField("Endereço:", "", 25, TextField.ANY);
        fieldTelefone = new TextField("Fone:", "", 12, TextField.ANY);
        tfLogin = new TextField("Senha", "", 3, TextField.NUMERIC);
        tfNome = new TextField("Nome", "", 10, TextField.ANY);   
           
        
        fmMain = new Form("Login");   
        fmMain.addCommand(cmConectar);   
        fmMain.addCommand(cmSair);   
        fmMain.append(tfNome);   
        fmMain.append(tfLogin);
        fmMain.setCommandListener(this); 
         
       //componentes do form que cadastra
       
       formCadastro = new Form("Cadastro de Cliente");
       formCadastro.addCommand(clearCommand);
       formCadastro.addCommand(sendCommand);
       formCadastro.append(fieldNome);
       formCadastro.append(fieldEndereco);
       formCadastro.append(fieldTelefone);
       formCadastro.setCommandListener(this);
      
    }

    public void startApp() throws MIDletStateChangeException {
      
       display.setCurrent(fmMain);   
       //display.setCurrent(formCadastro);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
      notifyDestroyed();
    }


    void invokeServlet(String url) throws IOException {
        HttpConnection http = null;
        StringBuffer b = new StringBuffer();
        OutputStream os = null;
        if(this.tipo.equals("login"))
        {
            url = url + "?" + "login=" + tfLogin.getString() + "&" + 
                              "Nome=" + tfNome.getString();
            System.out.print(url);
             //REQUISAO DO URL
             http = (HttpConnection)Connector.open(url);
             // TIPO DE REQUISIÇAO
             http.setRequestMethod(HttpConnection.GET);
             // SEM CABEÇALHO
             // SEM DADOS.VAI NA URL
             //RESPOSTA SERVIDOR
             if(http.getResponseCode() == HttpConnection.HTTP_OK)   
             {
                 display.setCurrent(formCadastro); 
             }
             else
             {
                 alError = new Alert("Error ",http.getResponseCode() + http.getResponseMessage(), null, AlertType.ERROR);   
                 alError.setTimeout(Alert.FOREVER);   
                 display.setCurrent(alError, fmMain);
             } 
        }
        else
        {
           try {
              http = (HttpConnection)Connector.open(url);
              // TIPO DE REQUESIÇAO
              http.setRequestMethod(HttpConnection.POST);
              // CABEÇALHO
              http.setRequestProperty("IF-Modified-Since", "09 Aug 2007 10:00:00 GMT");
              http.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.1");
              http.setRequestProperty("Content-Language", "en-CA");
              http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
              //DADOS
              os = http.openOutputStream();
              os.write(("Nome"+ sNome).getBytes());
              os.write(("Endereco" + sEndereco).getBytes());
              os.write(("Telefone" + sTelefone).getBytes());
              os.flush();
              // RESPOSTA DO SERVIDOR
              [color=blue][b]DataInputStream is =(DataInputStream)http.openDataInputStream();
              StringBuffer buf = new StringBuffer();
              int ch;
              while ((ch = is.read()) != -1) {
              buf.append((char) ch);
              }
              Alert a = new Alert("Mensagem:");
              a.setString(buf.toString());
              a.setTimeout(Alert.FOREVER);
              display.setCurrent(a);[/b][/color]
                
           } 
           finally {
              if(os != null) {
              os.close();
           }
           if(http != null) {
              http.close();
           }
        }
     } 
   }
   public void commandAction(Command c, Displayable d) {
      String label = c.getLabel();
      if(label.equals("Limpar")) 
      {
        destroyApp(true);

      } 
      else if (label.equals("Enviar")) 
      {
        
         this.tipo = "Enviar";
         sNome = fieldNome.getString();
         fieldNome.setString("");
         sEndereco = fieldEndereco.getString();
         fieldEndereco.setString("");
         sTelefone = fieldTelefone.getString();
         fieldTelefone.setString("");
         Thread t = new Thread(this);
         t.start();
          
      } 
      if(label.equals("Sair"))   
        {   
            destroyApp(false);   
            notifyDestroyed();   
        }   
        if(label.equals("Conectar"))   
        {   
           this.tipo = "login";
           Thread t = new Thread(this);
           t.start(); 
        }  
   }
   public void run() {
     try {
        invokeServlet(url);
     }
     catch(IOException e) {}
     
   } 
}
Servlet
import java.io.*;
import java.text.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Servlet extends HttpServlet {
   public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {
        String sNome = request.getParameter("Nome");
        String sEndereco = request.getParameter("Endereco");
        String sTelefone = request.getParameter("Telefone");
        System.out.println("Enviados: "+ sNome);
        //trabalha aki com os dados
        /*
        String db = in.readUTF();
        String user = in.readUTF();
        String pwd = in.readUTF();

         */
       
        response.setContentType("text/plain");
        PrintWriter out = response.getWriter();
        out.println("cadastro feito....");
        out.close();
        out.flush();

    }
   public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
   {
        System.out.println("recebendo dados");   
        String login = request.getParameter("Login");   
        String nome = request.getParameter("Nome");
        
        if((nome == null) || (login == null))   
        {   
            response.sendError(response.SC_BAD_REQUEST, "login errado");   
            return;   
        } 
         
        //response.setContentType("text/plain");   
        PrintWriter out = response.getWriter();   
        out.write("Login ok ...");   
        out.close();   

}
}
O trecho
response.setContentType("text/plain");
        PrintWriter out = response.getWriter();
        out.println("cadastro feito....");
        out.close();
        out.flush();

nao eh enviado à midlet.Ela imprime no codigo

DataInputStream is =(DataInputStream)http.openDataInputStream();
              StringBuffer buf = new StringBuffer();
              int ch;
              while ((ch = is.read()) != -1) {
              buf.append((char) ch);
              }
              Alert a = new Alert("Mensagem:");
              a.setString(buf.toString());
              a.setTimeout(Alert.FOREVER);
              display.setCurrent(a);

o index.jsp.Nao quero que a midlet imprima o index.jsp e sim CADASTRO FEITO, por ex.
Alguem pode me ajudar?? Estou usando o netbeans 5.5.1

Valeu

2 Respostas

fabianofrizzo

Amigo da uma olhada nesse post aqui http://www.guj.com.br/posts/list/66077.javahre

Esse exemplo que eu passei ali é pra ler uma imagem

mas na classe que extends Thread vc coloca os métodos para acessar o ServLet…

Qualque coisa posta ai de novo…

hayase

onde vc coloca a servlet? digo no tomcat?
vc utiliza o eclipse pra projetos web?
poderia explicar um pouco melhor?
eu tb preciso fazer um login/senha através de uma aplicação web utilizando jsp…
mas ñ tá dando certo… eu ñ estou usando servlet diretamente… to usando somente jsp… que o tomcat converte em servlet… ñ sei q url colocar na string… to perdidinha da silva…
nesse seu código, onde vc roda a servlet? q jeito?
obrigada

Criado 12 de agosto de 2007
Ultima resposta 27 de ago. de 2007
Respostas 2
Participantes 3