DataInputStream bei ME65 ohne readUTF()

duermer

Mitglied
Hi,

Hab en Problem und zwar empfängt mein Programm von einem Servlet Daten.

auch alles soweit.

Nur beim ME 65 bleibt er an der Stelle stehen, an der ich die Daten aus dem DataInputStram lese.
Hab das so weit eingegrenzt, dass ich mir sicher bin, dass hier das Problem liegt.

Hier der Teil der die Daten auslesen soll:

Code:
                    StringBuffer text = 
                                   new StringBuffer(); 
                DataInputStream din = new DataInputStream(conn.openInputStream()); 
                int n = din.readInt(); 
  
                text.append(din.readUTF() ); 
               System.outprintln(text.toString());

und bei der Zeile text.append(din.readUTF()); bleibt er stehen.

Gibt es eine andere Möglichkeit die Daten auszulesen, als mit readUTF.
Vielleicht mit readByte()?
Ich weiß nur nicht wie?

Es gibt doch bestimmt ne Möglichkeit die Daten auszulesen ohne readUTF zu verwenden

Wäre um jede Hilfe dankbar.

Mit freundlichen Grüßen
Duermer
 
Nun du könntest folgendes tun:


StringBuffer text = new StringBuffer();
DataInputStream din = new DataInputStream(conn.openInputStream());
int n = din.readInt();
byte[] buffer=new byte[1024];
int n=din.read(buffer);
String temptext=new String(buffer);
text.append(temptext );

Ich nehme hier an, dass ein 1024 byte grosser Buffer langt, falls du einen grösseren brauchst ändere die Zahl.
Das sollte dir weiter helfen.

Grüsse
Torsten
 
Danke.

auch
Nur auf dem ME65 so auch nicht.

Da kommt anstatt des geschickten Strings folgendes:

<version="1.0!?><!DOCT ...

Den Rest kann ich nicht lesen, weil das Display es nicht weiter anzeigen kann.
Aber das sind doch normalerweise so XML-Headers oder so was ähnliches.

Was ist das?

Und wie komm ich so an meine richtige Daten.

Mfg Duermer
 
Hab es jetzt auch ausprobiert, ob auch am ME65 was ankommt, indem ich die din.readInt() ausgegeben hab.

Und da kommt ne größere Zahl raus.
Also auf keinen Fall -1.

An was kann das denn noch liegen.

Hab nämlich damit jetzt en rießen Problem.

Weil ich mein Programm jetzt auf 6 ME65 drauf machen soll.

Es aber nicht geht.

Was muss ich da denn noch machen.
Weil es doch auf allen anderen Handys geht.

Vielleichtstimmen ja irgendwelche Konfigurationen nicht.
Wäre ihm echt unendlich dankbar.

Hier mal mein Code für die HTTP Verbindung:

Code:
        try{
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            DataOutputStream dout = new DataOutputStream(bout);
            dout.writeUTF(tcs.USER.getString());
            tcs.data = bout.toByteArray();
            dout.close();
        }
        catch(IOException ioe){
            tcs.stat3.setLabel("Fehler weiter oben");
            repaint();
        }
        try {
           
             st1.setLabel("los gehts"); 
            
            String url = "http://lico-server.dyndns.org:8080/TCS/senden";
            HttpConnection conn = (HttpConnection)Connector.open(url);
  
            conn.setRequestMethod(
            HttpConnection.POST );
            conn.setRequestProperty(
            "User-Agent",
            "Profile/MIDP-1.0 Configuration/CLDC-1.0" );
            conn.setRequestProperty(
            "Content-Language", "en-US" );
            conn.setRequestProperty(
            "Accept", "application/octet-stream" );
            conn.setRequestProperty(
            "Connection", "close" );
            conn.setRequestProperty(
            "Content-Length",
            Integer.toString( tcs.data.length ) );
            OutputStream os = conn.openOutputStream();
            os.write(tcs.data);
            os.close();
             
            
               try{
                int rc= conn.getResponseCode();
                if( rc == HttpConnection.HTTP_OK ){
                    st1.setLabel("am Anfang der Request"); 
                    StringBuffer text =
                    new StringBuffer();
                                        st1.setLabel("Vielleicht der Input Stream"); 
                    repaint();
                    DataInputStream din = new DataInputStream(conn.openInputStream());
                    tcs.n = din.readInt();
                    System.out.println(tcs.n +"");
                    st1.setLabel(tcs.n +""); 
                    String t="";
                    repaint();
                   

                    repaint();
                    text.append(din.readUTF());
                    
                    st1.setLabel("Ist nicht der read UTF"); 
                    
                    repaint();
                  
                    tcs.msg = text.toString();
                    
                    System.out.println(tcs.msg); 
                    //st1.setLabel(tcs.msg); 
                    repaint();
                    
                    
                    
                    tcs.setRecord(tcs.msg);
                    
                    
                    
                    st1.setLabel("RMS past noch"); 
                    repaint();
                    
                    
                    
                    
                    tcs.teilen(tcs.msg);
                    
                    st1.setLabel("teilen is OK"); 
                    repaint();
                }else{
                    tcs.down();
     tcs.stat3.setLabel("leck mich am ");
                    repaint();
                    tcs.Projekt.start(tcs);
                    tcs.display.setCurrent(tcs.Projekt);
                }
                
            }
            catch(IOException ioe){
                tcs.down();
                st3.setLabel("Fehler"+ioe.getMessage());
                repaint();
                tcs.stat3.setLabel(tcs.msg);
                tcs.Projekt.start(tcs);
                tcs.display.setCurrent(tcs.Projekt);
            }
        }
        catch(IOException ioe){
            tcs.down();
            tcs.stat3.setLabel("Error");
            repaint();
            tcs.Projekt.start(tcs);
            tcs.display.setCurrent(tcs.Projekt);
        }

Das mit tcs.n oder so sind Variablen in meinem Haputprogramm.

Hier en Teil aus meinem Servet:
Code:
String text ="Testtesttest";
        //Hier geht der Send Prozess von statten
        StringTokenizer tok = new StringTokenizer( 
                                             text );
        Vector v = new Vector();
        while( tok.hasMoreTokens() ){
            v.addElement( tok.nextToken() );
        }


        ByteArrayOutputStream bout = 
                           new ByteArrayOutputStream();
        DataOutputStream dout = 
                          new DataOutputStream( bout );
      
        int size = v.size();
        dout.writeInt(5);
        for( int i = 0; i < size; ++i ){
            dout.writeUTF( (String) v.elementAt( i ) );
        }
        byte[] data = bout.toByteArray();

        // set the response headers and data...

        response.setContentLength( data.length );
        response.setStatus( response.SC_OK );

        OutputStream out = response.getOutputStream();
        out.write( data );
        out.close();
 
Zuletzt bearbeitet:
Zurück