Sony ericsson acessando servlet

OLÁ AMIGOS, BOA TARDE. SEREI OBJETIVO EM MINHA DÚVIDA.
E O SEGUINTE, FIZ UMA SIMPLES APLICAÇÃO EM J2ME, NA QUAL ESSA APLICAÇÃO ACESSA UM SERVLET PASSANDO 2 PARAMETROS dos.writeUTF(nome); e dos.writeUTF(idade); . NO EMULADOR (NETBEANS 5.5) TUDO FUNCIONA TRANQUILAMENTE. QUANDO EU INSTALO A APLICAÇÃO NO CELULAR OS PARAMETROS ENVIADOS PELO CELULAR NAO SAO VISUALIZADOS LÁ NO SERVLET, MAS CHEGA A FAZER A REQUISIÇÃO NO SERVLET.

Código fonte resumido do Midlet

public void run() {
String param="";
int t=0;

   try {                                  
            //------------------------------------------------------
        StringBuffer sb = new StringBuffer();
        HttpConnection c = null;
        c = (HttpConnection) Connector.open(url);
        c.setRequestProperty(
               "User-Agent","Profile/MIDP-2.0, Configuration/CLDC-1.1");
        c.setRequestProperty("Content-Language","en-US");
        c.setRequestMethod(HttpConnection.GET);
        DataOutputStream dos = (DataOutputStream) c.openDataOutputStream();
            dos.writeUTF("300");
            dos.writeUTF("TESTE");
            dos.writeUTF("TESTE");
            dos.flush();
            dos.close();
            DataInputStream is =(DataInputStream) c.openDataInputStream();
            int ch;
            sb = new StringBuffer();
            while ((ch = is.read()) != -1) {
                sb.append((char)ch);
            }
        param=sb.toString();
        
        is.close();
        c.close();
            
       
   
   label.setText("Operação bem sucedida.");
   limpar();

   } catch (Exception ex) {
       label.setText("Houve erro.");
       limpar();
       label.setText("Tente novamente.");
       limpar();
        ex.printStackTrace();        
    }     
        
    }

}


Fonte do ServLet

package web;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.text.html.parser.Parser;

import model.Math;
import dao.MathDao;

public class MathServlet extends HttpServlet {

private static final long serialVersionUID = 1L;
private static final MathDao mathDao = new MathDao();
private String operacao;
private int idusr;

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

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

            try {                       
                DataInputStream is = new DataInputStream(request.getInputStream());
                operacao= is.readUTF();
               
                
                 /* OPERAÇÕES DE TESTE */
                if (operacao.equals("300")) { //Quando o Midlet roda no celular esta variavel operacao fica = null, mas no emulador fica = 300 (o q é o certo)
                    String param="";
                  mathDao.FuncInserirTest( is.readUTF(),is.readUTF() );
                   out.print(param); 
                }
                
        } catch (Exception e) {
                System.out.println("MathServlet exception:"+e.getMessage());
        }
        
        out.flush();
        
        
    }

}

Olá amigo bem posso lhe pedir algo? passe o seu Atributo url para eu dar uma olhada. Esse aplicativo para ser testado em um computador server e um celular client real, vc necessitara ter a URL com o IP do seu computador, não necessita ser realmente Estático porém isso é muito ruim para um aplicação de celular, e cada vez que seu IP mudar vc terá que desistalar e instalar novamente sua aplicação ou fazer um campo para trocar o IP da HttpConnection.
O Melhor seria colocar a aplicação de Servlet em uma máquina com IP Estático…
Se seu IP estiver em 127.0.0.1 ou Localhost ele só funcionará mesmo no seu emulador no seu PC.
Agora se não for isso passe ambos códigos inteiros para eu dar uma olhada as vezes posso lhe ajudar!

eu sei amigo eu ja registrei meu ip no ddns, to passando o código, mas é o seguinte este fonte funciona perfeitamente no emulador, mas no celular quando eu faço a requisição eu consigo ver q a requisição foi aceita(na depuração NetBeans 5.5), mas o engraçado q os parametros enviados pelo celular chega como null ( tinha q ser assim “300”,“TESTE”,“TESTE”). to passando o fonte completo midlet p/ vc ver, ok espero q vc me ajude, abraços e fique com Deus…

/*

  • HelloMidlet.java
  • Created on 16 de Agosto de 2007, 14:16
    */

package hello;

import java.lang.String;
import javax.microedition.midlet.;
import javax.microedition.lcdui.
;
import javax.microedition.rms.;
import java.io.
;
import javax.microedition.io.*;
import java.lang.Thread;

/**
*

  • @author Savio
    */
    public class HelloMidlet extends MIDlet implements CommandListener, ItemCommandListener {

    /** Creates a new instance of HelloMidlet */
    public HelloMidlet() {
    }
    public String RS_NAME = “dados”;
    public RecordStore rs = null;
    private static String url = “http://dam.ddns.com.br:8084/testMeServer/MathServlet”;
    //private static String url = “http://casadopeixe:8084/testMeServer/MathServlet”;
    public String nome="";
    public String idade="";

    private Form helloForm;
    private Command exitCommand;
    private TextField tnome;
    private TextField tidade;
    private StringItem label;
    private Command CGravar;
    private Command CExportar;
    private TextField tpesquisa;
    private Command CPesquisar;
    private Command CExcluir;
    private Command Cenviar;

    Exportando2 Exportando2;

    /** Called by the system to indicate that a command has been invoked on a particular item.

    • @param command the Command that ws invoked
    • @param item the Item on which the command was invoked
      */
      public void commandAction(Command command, Item item) {
      // Insert global pre-action code here
      if (item == tpesquisa) {
      if (command == CPesquisar) {
      // Insert pre-action code here
      // Do nothing
      // Insert post-action code here
      open();
      PesqId2( Integer.parseInt(tpesquisa.getString()) );
      close();
      }
      }
      // Insert global post-action code here
      }

    /** This method initializes UI of the application.
    */
    private void initialize() {
    // Insert pre-init code here
    getDisplay().setCurrent(get_helloForm());
    // Insert post-init code here
    }

    /** Called by the system to indicate that a command has been invoked on a particular displayable.

    • @param command the Command that ws invoked

    • @param displayable the Displayable on which the command was invoked
      */
      public void commandAction(Command command, Displayable displayable) {
      // Insert global pre-action code here
      if (displayable == helloForm) {
      if (command == exitCommand) {
      // Insert pre-action code here
      exitMIDlet();
      // Insert post-action code here
      } else if (command == CGravar) {
      // Insert pre-action code here
      // Do nothing
      // Insert post-action code here
      open();
      Gravar(tnome.getString(),tidade.getString());
      close();
      } else if (command == CExportar) {
      // Insert pre-action code here
      // Do nothing
      // Insert post-action code here
      //open();
      //IniciarExportacao();

       } else if (command == CExcluir) {                      
           // Insert pre-action code here
           // Do nothing                        
           // Insert post-action code here
           open();
           delete(cod);
           close();
           
       } else if (command == Cenviar) {                      
           // Insert pre-action code here
           // Do nothing                        
           // Insert post-action code here
           Exportando2= new Exportando2(this);
           Exportando2.start();
       }                       
      

      }
      // Insert global post-action code here
      }

    /**

    • This method should return an instance of the display.
      */
      public Display getDisplay() {
      return Display.getDisplay(this);
      }

    /**

    • This method should exit the midlet.
      */
      public void exitMIDlet() {
      getDisplay().setCurrent(null);
      destroyApp(true);
      notifyDestroyed();
      }

    /** This method returns instance for helloForm component and should be called instead of accessing helloForm field directly.

    • @return Instance for helloForm component
      */
      public Form get_helloForm() {
      if (helloForm == null) {
      // Insert pre-init code here
      helloForm = new Form(null, new Item[] {
      get_tnome(),
      get_tidade(),
      get_label(),
      get_tpesquisa()
      });
      helloForm.addCommand(get_exitCommand());
      helloForm.addCommand(get_CGravar());
      helloForm.addCommand(get_CExportar());
      helloForm.addCommand(get_CExcluir());
      helloForm.addCommand(get_Cenviar());
      helloForm.setCommandListener(this);
      // Insert post-init code here
      }
      return helloForm;
      }

    /** This method returns instance for exitCommand component and should be called instead of accessing exitCommand field directly.

    • @return Instance for exitCommand component
      */
      public Command get_exitCommand() {
      if (exitCommand == null) {
      // Insert pre-init code here
      exitCommand = new Command(“Exit”, Command.EXIT, 1);
      // Insert post-init code here
      }
      return exitCommand;
      }

    /** This method returns instance for tnome component and should be called instead of accessing tnome field directly.

    • @return Instance for tnome component
      */
      public TextField get_tnome() {
      if (tnome == null) {
      // Insert pre-init code here
      tnome = new TextField(“Nome”, null, 120, TextField.ANY);
      // Insert post-init code here
      }
      return tnome;
      }

    /** This method returns instance for tidade component and should be called instead of accessing tidade field directly.

    • @return Instance for tidade component
      */
      public TextField get_tidade() {
      if (tidade == null) {
      // Insert pre-init code here
      tidade = new TextField(“Idade”, null, 120, TextField.ANY);
      // Insert post-init code here
      }
      return tidade;
      }

    /** This method returns instance for label component and should be called instead of accessing label field directly.

    • @return Instance for label component
      */
      public StringItem get_label() {
      if (label == null) {
      // Insert pre-init code here
      label = new StringItem("", “”);
      // Insert post-init code here
      }
      return label;
      }

    /** This method returns instance for CGravar component and should be called instead of accessing CGravar field directly.

    • @return Instance for CGravar component
      */
      public Command get_CGravar() {
      if (CGravar == null) {
      // Insert pre-init code here
      CGravar = new Command(“Gravar”, Command.OK, 1);
      // Insert post-init code here
      }
      return CGravar;
      }

    /** This method returns instance for CExportar component and should be called instead of accessing CExportar field directly.

    • @return Instance for CExportar component
      */
      public Command get_CExportar() {
      if (CExportar == null) {
      // Insert pre-init code here
      CExportar = new Command(“Exportar”, Command.OK, 1);
      // Insert post-init code here
      }
      return CExportar;
      }

    /** This method returns instance for tpesquisa component and should be called instead of accessing tpesquisa field directly.

    • @return Instance for tpesquisa component
      */
      public TextField get_tpesquisa() {
      if (tpesquisa == null) {
      // Insert pre-init code here
      tpesquisa = new TextField(“Entre com o C\u00F3digo”, null, 120, TextField.ANY);
      tpesquisa.addCommand(get_CPesquisar());
      tpesquisa.setItemCommandListener(this);
      // Insert post-init code here
      }
      return tpesquisa;
      }

    /** This method returns instance for CPesquisar component and should be called instead of accessing CPesquisar field directly.

    • @return Instance for CPesquisar component
      */
      public Command get_CPesquisar() {
      if (CPesquisar == null) {
      // Insert pre-init code here
      CPesquisar = new Command(“Pesquisar”, Command.OK, 1);
      // Insert post-init code here
      }
      return CPesquisar;
      }

    /** This method returns instance for CExcluir component and should be called instead of accessing CExcluir field directly.

    • @return Instance for CExcluir component
      */
      public Command get_CExcluir() {
      if (CExcluir == null) {
      // Insert pre-init code here
      CExcluir = new Command(“Excluir”, Command.OK, 1);
      // Insert post-init code here
      }
      return CExcluir;
      }

    /** This method returns instance for Cenviar component and should be called instead of accessing Cenviar field directly.

    • @return Instance for Cenviar component
      */
      public Command get_Cenviar() {
      if (Cenviar == null) {
      // Insert pre-init code here
      Cenviar = new Command(“Enviar Param”, Command.OK, 1);
      // Insert post-init code here
      }
      return Cenviar;
      }

    private int cod;

    public void close() {
    try {
    rs.closeRecordStore();
    }
    catch (RecordStoreNotOpenException e) {
    System.out.println("-- O Record Store esta fechado");
    }
    catch (RecordStoreException e) {
    System.out.println("-- Outro erro");
    }
    }
    public void open() {
    try {
    //rs.deleteRecordStore(RS_NAME);
    rs = RecordStore.openRecordStore(RS_NAME, true);
    }
    catch (RecordStoreNotFoundException e) {
    System.out.println("-- RecordStore inexistente");
    }
    catch (RecordStoreException e) {
    System.out.println("-- Outro erro");
    }
    }

    public void Gravar(String nome,String idade) {
    try {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    DataOutputStream dos = new DataOutputStream(baos);
    dos.writeUTF(nome);
    dos.writeUTF(idade);
    dos.flush();
    byte[] data = baos.toByteArray();
    int id = rs.addRecord(data, 0, data.length);
    //int id = this.getRecordStore().addRecord(this.data,0, data.length);
    label.setText(" “+String.valueOf(id));
    tnome.setString(”");
    tidade.setString("");
    baos.close();
    dos.close();
    }
    catch (IOException e) {
    label.setText("-- Erro de IO");
    }
    catch (RecordStoreFullException e) {
    label.setText("-- Não existe espaço disponível");
    }
    catch (RecordStoreNotOpenException e) {
    label.setText("-- O Record Store esta fechado");
    }
    catch (RecordStoreException e) {
    label.setText("-- Outro erro");
    }
    }
    public void delete(int id) {
    try {
    rs.deleteRecord(id);
    }
    catch (RecordStoreFullException e) {
    System.out.println("-- Não existe espaço disponível");
    }
    catch (RecordStoreNotOpenException e) {
    System.out.println("-- O Record Store esta fechado");
    }
    catch (RecordStoreException e) {
    System.out.println("-- Outro erro");
    }
    }

    public String PesqId(int id) {
    String toReturn = “”;
    try {
    int recordSize = rs.getRecordSize(id);
    byte[] data = new byte[recordSize];
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    DataInputStream dis = new DataInputStream(bais);
    int numBytes = rs.getRecord(id, data, 0);
    nome = dis.readUTF();
    idade = dis.readUTF();
    toReturn = nome+"|"+idade;

    //ticker1.setString(“Pré-Venda Nº: 0”+dis.readUTF()+" Mesa Nº: 0"+dis.readUTF());
    bais.reset();
    bais.close();
    dis.close();
    }
    catch (IOException e) {
    System.out.println("-- Erro de IO");
    }
    catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("-- Registro muito grande");
    }
    catch (InvalidRecordIDException e) {
    System.out.println("-- ID inexistente");
    }
    catch (RecordStoreNotOpenException e) {
    System.out.println("-- O Record Store esta fechado");
    }
    catch (RecordStoreException e) {
    System.out.println("-- Outro erro");
    }
    return toReturn;
    }
    public String PesqId2(int id) {
    String toReturn = “”;
    try {
    int recordSize = rs.getRecordSize(id);
    cod=id;
    byte[] data = new byte[recordSize];
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    DataInputStream dis = new DataInputStream(bais);
    int numBytes = rs.getRecord(id, data, 0);
    tnome.setString( dis.readUTF() ) ;
    tidade.setString( dis.readUTF() );
    toReturn = tnome.getString()+"|"+tidade.getString();
    //ticker1.setString(“Pré-Venda Nº: 0”+dis.readUTF()+" Mesa Nº: 0"+dis.readUTF());
    bais.reset();
    bais.close();
    dis.close();
    }
    catch (IOException e) {
    label.setText("-- Erro de IO");
    toReturn=“erro”;
    }
    catch (ArrayIndexOutOfBoundsException e) {
    label.setText("-- Registro muito grande");
    toReturn=“erro”;
    }
    catch (InvalidRecordIDException e) {
    label.setText("-- ID inexistente");
    toReturn=“erro”;
    }
    catch (RecordStoreNotOpenException e) {
    label.setText("-- O Record Store esta fechado");
    toReturn=“erro”;
    }
    catch (RecordStoreException e) {
    label.setText("-- Outro erro");
    toReturn=“erro”;
    }
    return toReturn;
    }

    public void limpar(){
    try {
    Thread.sleep(2500);
    } catch (InterruptedException ex) {
    ex.printStackTrace();
    }
    label.setText("");
    tnome.setString("");
    tidade.setString("");
    }

    public void IniciarExportacao() {
    try {

       for (int i = 1; i <= rs.getNumRecords(); i++) {
              PesqId(i);
          }
       
       
       
       
       
       
       close();
     }
    

    catch (RecordStoreNotOpenException ex) {
    System.out.println("-- O Record Store esta fechado");
    }
    }

    public void startApp() {
    initialize();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public class Exportando2 implements Runnable {
    HelloMidlet midlet;
    private Display display;
    private int i=0;
    //private GravarPrevenda GravarPrevenda ;
    public Exportando2(HelloMidlet midlet) {
    this.midlet = midlet;
    display = Display.getDisplay(midlet);
    }
    public void start() {
    Thread t = new Thread(this);
    t.start();
    }
    public void run() {
    String param="";
    int t=0;
    try {
    //------------------------------------------------------
    StringBuffer sb = new StringBuffer();
    HttpConnection c = null;
    c = (HttpConnection) Connector.open(url);
    c.setRequestProperty(
    “User-Agent”,“Profile/MIDP-2.0, Configuration/CLDC-1.1”);
    c.setRequestProperty(“Content-Language”,“en-US”);
    c.setRequestMethod(HttpConnection.GET);
    DataOutputStream dos = (DataOutputStream) c.openDataOutputStream();
    dos.writeUTF(“300”);
    dos.writeUTF(“TESTE”);
    dos.writeUTF(“TESTE”);
    dos.flush();
    dos.close();
    DataInputStream is =(DataInputStream) c.openDataInputStream();
    int ch;
    sb = new StringBuffer();
    while ((ch = is.read()) != -1) {
    sb.append((char)ch);
    }
    param=sb.toString();
    is.close();
    c.close();

    label.setText("Operação bem sucedida.");
    limpar();
    
    } catch (Exception ex) {
        label.setText("Houve erro.");
        limpar();
        label.setText("Tente novamente.");
        limpar();
         ex.printStackTrace();        
     }     
         
     }
    

}

}

Olha amigo não tive tempo de analizar seu código, mas como foi “quebrado” o primeiro parâmetro de erro cujo o qual eu havia dito então existem mais algumas hipóteses.
Meu professor um dia havia me dito que nem todos os Celulares implementavam a HttpConnection, e eu fui atraz de saber disso. Acontece que a HttpConnection é implementada atravéz do MIDP(Perfil) e não na CLDC(Configuração). Como seu Celular é Sony Ericsson mesmo com os padrões para se instituir conexões eles podem ter mudado para funcionar em API’s próprias para desenvolvimento com seus celulares. Eles tem até um Wireless Toolkit próprio, enquanto os outros fabricantes tem ferramentas de desenvolvimento ou além disso apenas inserem suas bibliotecas novas e api’s no Wireless Toolkit normal para que nós possamos trabalhar com essas bibliotecas.
O que estava acontecendo com JME não era mais o WORA(Write Once Run Anywhere) pois a plataforma estava ficando muito difundida, agora com o JavaFX Mobile(o novo OS que a Sun esta prometendo) os celulares que o Implementarem não passarão mais essas dores de cabeça para nós, ainda sim existem algumas expecificações que dizem que os fabricantes apartir desse novo MIDP terão que seguir um padrão para que todos os Celulares tenham as bibliotecas padrões de desenvolvimento.

Sendo assim construi uma aplicação pra vc que pode lhe ajudar, é só vc fazer as modificações necessárias para rodar no seu Servidor e pronto. A Conexão é via StreamConnection e utilizei Sockets para fazer essa conexão, teste e veja se este programa funcionará em seu celular… faça as modificações apropriadas… estou enviando o Código e ambos projetos no NetBeans para que vc possa dar uma olhada.

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

import java.io.*;
import java.net.*;
import javax.swing.JOptionPane;

public class Server {
  public static void main(String[] args) throws IOException{
       String recebido;
       String enviado;
       
       ServerSocket serverSocket = new ServerSocket(55555);
       System.out.println("Esperando Conexão...");
       while(true){
        Socket socket = serverSocket.accept();
        System.out.println("O Servidor Recebeu uma conexão de:"+socket.getInetAddress());
        DataInputStream is = new DataInputStream(socket.getInputStream());
        DataOutputStream os = new DataOutputStream(socket.getOutputStream());
        enviado ="Conexão estabelecida com o Socket:"+"Porta:"+serverSocket.getLocalPort();
        recebido = is.readUTF();
        System.out.println("Recebido do Cliente:"+recebido);
        os.writeUTF(enviado);
        
        is.close();
        os.close();
        socket.close();
       }
       
   }
}

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

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

public class ClientSocket extends MIDlet implements CommandListener {
    private Display display;
    private Form form;
    private Command commandSair;
    private Command commandSocket;
    private Alert alert;
    
    public ClientSocket(){
        display = Display.getDisplay(this);
        form = new Form("Cliente Socket");
        form.setCommandListener(this);
        
        commandSair = new Command("Sair",Command.EXIT,0);
        commandSocket = new Command("Conectar",Command.SCREEN,1);
        form.addCommand(commandSair);
        form.addCommand(commandSocket);
    }
    public void startApp() {
        display.setCurrent(form);
    }
    
    public void pauseApp() {
        
    }
    
    public void destroyApp(boolean unconditional) {
        display.setCurrent(null);
        this.notifyDestroyed();
    }
     public void showAlert(String msg){
        alert = new Alert("Alerta");
        alert.setString(msg);
        alert.setTimeout(Alert.FOREVER);
        display.setCurrent(alert);
    }
    public void commandAction(Command command, Displayable displayable) {
        if(command == commandSair){
            destroyApp(true);
        }
        if(command == commandSocket){
            ThreadSocket t = new ThreadSocket();
            t.start();
        }
    }
    
    class ThreadSocket extends Thread {
        //Modifique a url para a de seu computador se mudar a porta aki mude a do ServerSocket tbm
        private String url = "socket://127.0.0.1:55555";
        public void run(){
            StreamConnection socket = null;
            DataInputStream is = null;
            DataOutputStream os = null;
            String envio ="Celular Conectado ao Servidor e Requerindo Resposta" ;
            String recebido;
            try {
                socket = (StreamConnection) Connector.open(url,Connector.READ_WRITE);
                System.out.println("Conectando-se ao Servidor...");
                
                is = new DataInputStream(socket.openDataInputStream());
                os = new DataOutputStream(socket.openDataOutputStream());
                
                os.writeUTF(envio);
                recebido = is.readUTF();
                
                form.append("Resposta:"+recebido);
                display.setCurrent(form);
            } catch (IOException ex) {
                showAlert(ex.getMessage());
            }
            
        }
    }
}

Qualquer Dúvida sobre o Código me contate espero ter te ajudado amigo. De uma olhada e veja se é isto mesmo que eu lhe disse… Caso for e vc queira fazer mesmo assim via Http, acessando um Socket eu lhe recomendo dar uma olhada no Site da SonyEricsson e pegar as especificações de suas Api’s para celular e seu Wireless toolkit, acredito que em outros celulares irão rodar seu programa normalmente.
Até breve… e dê uma modificada nesse Código ai…

Poxa cara muito obrigado pela explicação mesmo.
vou seguir suas explicações e tbm vou tentar com este código q vc me passou no meu Celular LG vou arrumar um cabo p/ testar. Valeu mesmo q Deus te abençoe, te darei um retorno…

Sou ateu amigo mas tudo bem, sei que é um modo de expressar agradecimento de alguns cristões então recebo seus agradecimentos de uma forma positiva.
Gostaria de saber se em seu Celular estaria pegando. Bem não sei ao certo mas me parece que vc estava testando em um Sony Ericsson não é mesmo? tente esse exemplo nele e veja se ele pega, se ele pegar acredito que seria as hipóteses apresentadas acima que estão causando o problema de conexão via Http.
Em minha iniciação científica cujo qual minha parte fiquei responsável pelas conexões e pela parte de JME tivemos de deixar ambas conexões ativas por esse motivo, em alguns celulares Http pega, em outros só Socket.
Eu não me lembro se StreamConnection tbm faz conexões com Http, eu não me lembro mais uma das interfaces faz conexão e recebe tbm, então isso tbm poderia lhe salvar a pele na hora de sua implementação.
Apenas para facilitar e lhe ajudar estou postando a vc mais material que pode te ajudar…

Lista de Midp e Cldc de Celulares:
http://www.club-java.com/TastePhone/J2ME/MIDP_Benchmark.jsp;jsessionid=93A6A06034AADFC4654876EADF657FA8?l=pt

Api de Referencia da CLDC 1.0
http://java.sun.com/javame/reference/apis/jsr030/

Api de Referencia da MIDP 2.0
http://java.sun.com/javame/reference/apis/jsr118/

Alguns Emuladores de Celular no Site da Sun
http://developers.sun.com/mobility/midp/articles/emulators/index.html

Java ME Development Kits
http://developers.sun.com/mobility/allsoftware/index.html

Acredito que com os Development Kits, baixados e instalados, será mais fácil emular um celular preferido de uma maneira mais parecida com aquele desejado. Ai existem Development Kits da Motorola, SonyEricsson e outras…

Boa sorte em sua aplicação, e até breve, novamente espero ter ajudado!

AJUDOU E MUITO CARA

EU SÓ ESTOU ESPERANDO O CELULAR CHEGAR P/ EU TESTAR, ASSIM Q ELE CHEGAR EU TE DOU UMA RESPOSTA, OK VALEW…

CARA NAO ESTOU ENTENDENDO MAIS NADA TESTEI O FONTE Q VC ME PASSOU EM UM SONY ERICSSON W810, MAS TBM NAO FUNCIONOU, “O RAI DO NEGÓCIO” SÓ FUNCIONA NO EMULADOR, E TBM BAIXEI E INSTALEI O TOOLKIT DA PRÓPRIA SONY ERICSSON E NADA TBM, SERÁ Q TEM Q COLOCAR ALGUM OUTRO ARQUIVO NO CELULAR ALÉM DO JAD E JAR P/ O MIDLET FAZER COMUNICAÇÃO COM PC VIA SOCKET OU VIA HTTP?
VAMOS TENTAR DESCOBRIR ESSE PROBLEMA, AGUARDO RESPOSTA, ABRAÇOS…

Bom pelo que eu vi ele passou conexão por socket nem todos os aparelhos suportam comunicação por Sockets intão aconselharia a você fazer via Http

da uma olhada nesse outro post aqui que tem um exemplo de conexao HTTP com thread

http://www.guj.com.br/posts/list/66077.java#349086

Qualque coisa posta ai de novo

eu ja testei os 2 exemplos tanto socket quanto http em um sony ericsson w810, to achando isso muito estranho era p/ ter funcionado, mas vou testar em outros aparelhos, valew…

Qual é o erro que esta dando??

A amigo usa bbcode pra ficar mais facil de entender o código se nao fica meio dificil…

é o seguinte serei objetivo.

// fonte do midlet resumido
StringBuffer sb = new StringBuffer();
HttpConnection c = null;
c = (HttpConnection) Connector.open(url);
c.setRequestProperty(
“User-Agent”,“Profile/MIDP-2.0, Configuration/CLDC-1.1”);
c.setRequestProperty(“Content-Language”,“en-US”);
c.setRequestMethod(HttpConnection.GET);
DataOutputStream dos = (DataOutputStream) c.openDataOutputStream();
dos.writeUTF(“300”);
dos.writeUTF(“TESTE”);
dos.writeUTF(“TESTE”);
dos.flush();
dos.close();
DataInputStream is =(DataInputStream) c.openDataInputStream();
int ch;
sb = new StringBuffer();
while ((ch = is.read()) != -1) {
sb.append((char)ch);
}
param=sb.toString();

is.close();
c.close();

os parametros enviados pelo celular chega como null ( tinha q ser assim “300”,“TESTE”,“TESTE”), mas no emulador funciona perfeitamente, o fonte do servlet esta logo acima. O problema acho q é o celular q nao aceita HttpConnection. Irei testar esta mesma midlet em outros modelos… darei um retorno a vcs, valew…

Galera tudo resolvido…
resolvi passar os parametros pela URL mesmo, só consegui desta maneira no sony ericsson w810 nos outros modelos ainda não testei, mas este mesmo fonte da midlet q eu coloquei acima, funciona perfeitamente em um IPAQ RX1950 com a VM J9 acessando o mesmo servlet (está acima). ok de qualquer forma obrigado a todos, valew…

fabianofrizzo

O amigo estava tentando fazer o Acesso via HttpConnection, depois passei o código para ele tentar fazer a conexão via socket baseado em uma teoria cujo qual tive. Não sei não pode ser que eles não tenham implementado essas bibliotecas nesse celular.
Mas tudo bem, que bom que foi resolvido. Espero que o padrão instituido pela JCP aquele (MSA) se concretize logo, e espero que cheguem celulares assim aqui, assim não teremos esses problemas mais com portabilidade.
Até mais!