Frage

ich eine Datei von einem Nokia N97 Handy auf Server laden, funktioniert alles gut, aber nach der Datei will hochgeladen ich Antwort vom Server zu erhalten. Das Problem ist, dass ich Antwort erhalte erst nach einer halben Minute oder mehr. Von dem, was ich die Code-Blöcke in httpConnection.getResponseCode sehen () auf Antwort wartet. Getestet habe ich es auf einem Sony Ericsson und ich Antwort bekommen sehr schnell, so dass ich ein Nokia N97 Problem nehmen ist. (Ist kein Server-Problem, weil es fein auf anderen Telefonen funktioniert)

Hat jemand weiß, warum dieses Ding nur auf Nokia passiert?

Hier ist ein Code-Snippet:

public upload () {

       httpConn = (HttpsConnection) Connector.open(url, Connector.READ_WRITE);
        ...
       //set httpConn parameters and request method 
       ...

       writeParametersAndFileName(os, "text/plain");


       **writeFileToStream(os);** 

       os.write("\r\n".getBytes());
       os.write("--".getBytes());

       os.write(boundary.getBytes());

       os.write("--".getBytes());
       os.write("\r\n".getBytes());

        *//here code blocks on Nokia N97. Same thing happens if I use os.flush() after
        // I send chunks of the file*
         .....
        codeResp = httpConn.getResponseCode();
        // check condition
        checkResponseHeader();

}

Öffentlichkeit writeFileToStream () {

        InputStream is = null;
        FileConnection c = null;
        try
        {
           c = (FileConnection) Connector.open("file:///"+ sourcePath, Connector.READ);

           if(c.exists()) {
               is = c.openInputStream();

               long fs = c.fileSize();
               while (total < fs) {
                    byte[] data = new byte[512];
                    int readAmount = is.read(data,0,512);                       
                    total += readAmount;
                    os.write(data, 0, readAmount);


            }

            //os.flush();
        }
        catch (IOException ex) {
           //               
        }
        finally
        {
           //close connection

        }

}

War es hilfreich?

Lösung

Sie denken, nur die Dateien hochgeladen wurde.

Ihr Anruf zu getResponseCode () ist der erste, der die Httpconnection bewirkt, tatsächlich mit dem Server zu verbinden.

Es wird nicht zurückkehren, bis die Datei hochgeladen hat, die vermutlich mehr als eine Minute dauert.

Das ist vollkommen gültig Verhalten nach der Httpconnection-Spezifikation in JSR-118:

“  Die folgenden Verfahren veranlassen, den Übergang in den verbundenen Zustand, wenn die Verbindung im Aufbauzustand ist.

* openInputStream
* openDataInputStream
* getLength
* getType
* getEncoding
* getHeaderField
* getResponseCode
* getResponseMessage
* getHeaderFieldInt
* getHeaderFieldDate
* getExpiration
* getDate
* getLastModified
* getHeaderField
* getHeaderFieldKey 

"

erwarte ich, dass die anderen Telefone Sie diese auf versucht haben, sind weniger leistungsfähig als das N97 und brauchen die Output zu spülen, damit die Verbindung zum Server, bevor sie in der Spezifikation gemäß sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top