J2ME httpconnection getResponseCode () كتل انتظار الرد من الخادم على نوكيا N97

StackOverflow https://stackoverflow.com/questions/1872617

سؤال

قمت بتحميل ملف من هاتف Nokia N97 إلى Server، كل شيء يعمل بشكل جيد ولكن بعد تحميل الملف، أرغب في الحصول على استجابة من الخادم. المشكلة هي أنني أحصل على استجابة فقط بعد نصف دقيقة أو أكثر. من ما أرى كتل التعليمات البرمجية في HttpConnection.getResponseCode () في انتظار الاستجابة. لقد اختبرته على سوني إريكسون وأحصل على استجابة سريعة جدا لذلك افترض أن مشكلة نوكيا N97. (ليست مشكلة خادم لأنها تعمل بشكل جيد على هواتف أخرى)

هل يعرف أحد لماذا يحدث هذا الشيء فقط على نوكيا؟

هنا هو مقتطف رمز:

التحميل العام () {

       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();

}

عامة 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

        }

}

هل كانت مفيدة؟

المحلول

تعتقد فقط تم تحميل ملفك.

مكالمتك إلى GetResponeseCode () هي الأولى التي تسبب httpconnection في الواقع الاتصال بالخادم.

لن يعود حتى يقوم بتحميل الملف، الذي يفترض أن يستغرق أكثر من دقيقة واحدة.

هذا سلوك صالح تماما وفقا لمواصفات HttpConnection في JSR-118:

"الأساليب التالية تسبب الانتقال إلى الحالة المتصلة عند الاتصال في حالة الإعداد.

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

"

أتوقع أن تكون الهواتف الأخرى التي جربتها هذا أقل قوة من N97 وتحتاج إلى تدفق الناتج، وبالتالي الاتصال بالخادم قبل أن يتم عليهم وفقا للمواصفات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top