Thread HTTP

Galera,

Estou com uma aplicacao J2ME que comunica com um servelet via HTTP.

Na resposta do server preciso dar um append no form para dizer o q o server respondeu porém, recebo a resposta do server dentro do thread da conexao HTTP, e fica impossível dar um append.

Vocês conhecem alguma forma pra corrigir isso!?

Valeu Grandão!!

Rafa :shock:

Cria um método na classe que controla tua aplicação para receber a resposta da thread e dar um append ou repassar para outro método para fazer isso!

Mas para a gente entender melhor é só postar o código!

Valeu

Bem amigo fiz um aplicativo de Exemplo pra vc, espero que seja para vc aprender como faz uma conexão e que não seja um trabalho escolar pois se não saiba que vc não está aprendendo nada com isso… por isso não coloquei os comentários, acredito que se vc sabe um pouco de JME e Servlets irá conseguir fazer o exemplo facilmente…
Divido então em duas partes… primeiramente o Servlet e depois o Cliente.

Perdoe a rudeza de meu código é que este mesmo foi escrito as presas pois eu estou um pouco ocupado no momento mas vi que sua dúvida é a de alguns daki do fórum…

Ambos exemplos foram desenvolvidos no NetBeans 5.5 .

Posto os Projetos e o Código, ambos estão pegando o projeto é só exportar.
[size=18]ServletTeste.java[/size]

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class ServletTeste extends HttpServlet {
    private DataInputStream is;
    private DataOutputStream os;  
   
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       // processRequest(request, response);
    }
    
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        is = new DataInputStream((InputStream) request.getInputStream());
        System.out.println(is.readUTF());
        
        os = new DataOutputStream((OutputStream) response.getOutputStream());
        
        os.writeUTF("Conectado com a Servlet: "+getServletName()+" \nInfo: "+getServletName());
        
        response.setContentType("text/plain");
        
        is.close();
        os.close();
    }
    
    public String getServletInfo() {
        return "Short description";
    }
   
}

[size=18]Midlet.java[/size]

import java.io.DataInputStream;
import java.io.DataOutputStream;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Midlet extends MIDlet implements CommandListener {
    private Display display;
    private Form form;
    private Command commandSair;
    private Command commandHttp;
    private Alert alert;
    
    public Midlet(){
        display = Display.getDisplay(this);
        form = new Form("Teste Http");
        
        commandSair = new Command("Sair",Command.EXIT, 0);
        commandHttp = new Command("Conectar", Command.SCREEN,1);
        form.setCommandListener(this);
        form.addCommand(commandSair);
        form.addCommand(commandHttp);
    }
    public void showAlert(String msg){
        alert = new Alert("Alert...");
        alert.setString(msg);
        alert.setTimeout(Alert.FOREVER);
        display.setCurrent(alert);
    }
    public void startApp() {
        display.setCurrent(form);
    }
    
    public void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
        display.setCurrent(null);
        this.notifyDestroyed();
    }
    
    public void commandAction(Command command, Displayable displayable) {
        if(command == commandSair){
            destroyApp(true);
        }
        if(command == commandHttp){
            ThreadHttp thread = new ThreadHttp();
            thread.start();
        }
    }
    private class ThreadHttp extends Thread {
        public String url ="http://localhost:8084/ServerTxt/ServletTeste";
        HttpConnection http = null;
        DataInputStream is = null;
        DataOutputStream os = null;
        public void run(){
            try{
                String mensagem;
                int status;
                http = (HttpConnection)Connector.open(url,Connector.READ_WRITE);
                http.setRequestProperty("User-Agent","Profile/MIDP-2.0, Configuration/CLDC-1.0");
                http.setRequestProperty("Content-Language","en-US");
                http.setRequestMethod(HttpConnection.POST);
                os = http.openDataOutputStream();
                os.writeUTF("Conexão realizada");
                
                status = http.getResponseCode();
                is = http.openDataInputStream();
                mensagem = is.readUTF();
                System.out.println(mensagem);
                if(status == http.HTTP_OK){
                    form.append(mensagem);
                    display.setCurrent(form);
                }else{
                    showAlert("Conexão sem Sucesso");
                    display.setCurrent(alert);
                }
            }catch(Exception e){
                showAlert(e.getMessage());
            }
        }
        
    }
}

Qualquer Dúvida me Contatem. Estou pensando em montar um pequeno tutorial sobre conexões via Client/Server na plataforma JME juntamente com Servlets(HttpConnection) e ServerSockets(Socket).
Espero ter ajudado a alguns…

hehehehe
vamo testa esse código ai
quero ve como isso funfa…
obrigada
ficamos gratos se vc realmente fizer esse artigo :slight_smile:
apoiado :slight_smile:
até