Enviar String da Midlet para o Servlet... ajuda please

estou tentando enviar uma String ao servlet…

codigo servlet( funciona normalmente pois consigo enviar uma String apartir de uma página jsp )

ele pega a String enviada e grava em um arquivo de texto…

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
        File file = new File("C://PedidosNet/pedidoTest.txt");
        file.createNewFile();
        
            FileWriter fw = new FileWriter("C://PedidosNet/pedidoTest.txt", true);   
            BufferedWriter conexao = new BufferedWriter(fw);   
            conexao.write(request.getParameter("dados"));   
            conexao.newLine();   
            conexao.close();   

O problema é a Midlet…

não conseguindo enviar a String “dados” para a Midlet…
me deem uma luz…

desde já agradeço a todos!

na Midlet esou usando esse código…
ele acessa normalmente pois ele cria o arquivo de texto quando acessa a página, e está criando normalmente, só não está enviando corretamente a String para escrever no arquivo…

  
Thread t = new Thread( ) {   
   public void run( ) {   
      try {  
          
          String dadosStr = "CRIANÇA ESPERANÇA";
          System.out.println("iniciou");
          HttpConnection c = null;
         c = (HttpConnection)Connector.open("http://189.81.4.140:8084/WorkService/GravaItensServlet", Connector.READ_WRITE);   
         //c = (HttpConnection)Connector.open("http://e-log.no-ip.info:8080/servlets-examples/servlet/RqExample/?XXX=BBB", Connector.WRITE);   
         c.setRequestMethod(HttpConnection.POST); 
         c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");   
         c.setRequestProperty("Content-Language", "en-US");   
         c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");   
         c.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");   
         c.setRequestProperty("Accept", "application/octet-stream");     
           
         OutputStream os = null;   
          System.out.println("OutputStream os = null;"); 
        os = c.openDataOutputStream(); 
         byte dados[] = dadosStr.getBytes();
         
        for (int i = 0; i < dados.length; i++)   
{   
    os.write(dados[i]);   
}   
os.flush();   
os.close();  
         
 
      } catch (IOException ex) {   
         //                      Handle error   
      } finally {   
           
   }   
   }   
};
t.start();

De uma olhada neste Classe, é uma Thread que solicita alguns dados de uma servlet que no meu caso possui conexão com banco de dados, e retorna um ByteArray, após verificar se o download foi executado corretamente, leio as informações e gravo em um RMS dentro do meu dispositivo movel.

class ImportData extends Thread {
        public void run() {
            try {
                HttpConnection con = (HttpConnection) Connector.open("http://localhost:8080/ServerDatabaseB/ServletDatabase?protocolo=passo1");
                int status = con.getResponseCode();
                if ( status == HttpConnection.HTTP_OK){
                    DataInputStream in = con.openDataInputStream();
                    String candidato = in.readUTF();
                    if(candidato.equals("Erro Servidor")){
                        get_alStatus().setString("Erro no servlet! Provavelmente BD");
                        getDisplay().setCurrent(get_alStatus(),get_lsPrincipal());
                    }else{
                        while (!candidato.equals("fim")){
                            inserirRMS(candidato,0);
                            candidato = in.readUTF();
                        }
                        get_alStatus().setString("Terminou de importar candidatos");
                        getDisplay().setCurrent(get_alStatus(),get_lsPrincipal());
                    }
                } else {
                    get_alStatus().setString("Erro: Conexão Codigo "+status);
                    getDisplay().setCurrent(get_alStatus(),get_lsPrincipal());
                }
            } catch (Exception e) {
                get_alStatus().setString("Erro: Conexão "+e.getMessage());
                getDisplay().setCurrent(get_alStatus(),get_lsPrincipal());
            }
        }
        
        private void inserirRMS(String candidato, int voto) {
            try {
                ByteArrayOutputStream bout = new ByteArrayOutputStream();
                DataOutputStream out = new DataOutputStream(bout);
                out.writeUTF(candidato);
                out.writeInt(voto);
                out.flush();
                rs.addRecord(bout.toByteArray(),0,bout.toByteArray().length);
            } catch (RecordStoreNotOpenException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            } catch (RecordStoreException ex) {
                ex.printStackTrace();
            }
            
        }
        
}

Espero ter ajudado, qualquer duvida poste novamente aqui.

No DevMobile.blog.br tem um artigo que ensina a fazer requisições web usando HttpConnection.

Abraço.

consegui pessoal… obrigado pela ajuda de todos

ai vai o código para quem quizer um exemplo de como enviar uma String com o método POST para um Servlet…
testei e funciona tudo perfeitinho… nesse exemplo ele não recebe resposta do servlet, apenas envia a String.


import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

/**
 *
 * @author Administrador
 */
public class SendPedServlet {
    
                   // Thread t = new Thread( ) {  
                     //  public void run( ) {  
                           
                 public SendPedServlet(String StrEnviar){          
                           try { 
             HttpConnection conection = (HttpConnection) Connector.open("http://localhost:8084/WorkService/GravaItensServlet", Connector.READ_WRITE);   
                   
                conection.setRequestMethod(HttpConnection.POST);    
                   
                conection.setRequestProperty("IF-Modified-Since","20 Jan 2001 16:19:14 GMT");   
                conection.setRequestProperty("User-Agent","Profile/MIDP-1.0 Confirguration/CLDC-1.0");   
                conection.setRequestProperty("Content-Language", "en-CA");   
                conection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");   
  
   
                   
                String dados = "dados="+ StrEnviar;   //"dados="   é o parametro do Servlet, o que vier seguinte é a String a ser enviada.
                byte[] data = dados.getBytes();   
                   
                conection.setRequestProperty("Content-Length", Integer.toString( data.length ) );   
                   
                /* passando parâmetros */  
                OutputStream out = conection.openOutputStream();   
                out.write(data);   
                out.close();    
            
               }
                           
                catch (Exception e) {   
                    }         
               finally {   
           
                }
         }     
 } 


ah… o código do servlet está mais acima… ele tbem tá funcionando direitinho…

se voce usar esse codigo e não der certo deixe uma mensagem pra agente ajudar…