2011-09-30 6 views
0

私は奇妙な問題に直面しています。 私はアンドロイドアプリからサーバーに画像をアップロードしようとしていましたが、しかし、私は無線LAN接続を使用していますが、私がGPRSを使用しているときにアプリケーションは無限の時間だけ処理を続ける。以下のコードは次のとおりです。イメージはアンドロイドでアップロードされます

try 
    { 
     Log.i(TAG,"publishFileToServer Called..."); 
     FileInputStream fileInputStream = new FileInputStream(new File(filePath)); 
     URL url = new URL(urlServer); 
     System.setProperty("http.keepAlive", "false"); 
     connection = (HttpURLConnection) url.openConnection(); 
     Log.i(TAG,"publishFileToServer Called... 1"); 
     // Allow Inputs & Outputs 
     connection.setDoInput(true); 
     connection.setDoOutput(true); 
     connection.setUseCaches(false); 
     Log.i(TAG,"publishFileToServer Called... 2"); 
     // Enable POST method 
     connection.setRequestMethod("POST"); 
     connection.setRequestProperty("Connection", "Keep-Alive"); 
     connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); 
     Log.i(TAG,"publishFileToServer Called...3"); 
     outputStream = new DataOutputStream(connection.getOutputStream()); 
     outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
     outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + filePath +"\"" + lineEnd); 
     outputStream.writeBytes(lineEnd); 
     Log.i(TAG,"publishFileToServer Called...4"); 
     bytesAvailable = fileInputStream.available(); 
     bufferSize = Math.min(bytesAvailable, maxBufferSize); 
     buffer = new byte[bufferSize]; 
     Log.i(TAG,"publishFileToServer Called...5"); 
     // Read file 
     bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     Log.i(TAG,"publishFileToServer Called...6"); 
     while (bytesRead > 0) 
     { 
      outputStream.write(buffer, 0, bufferSize); 
      bytesAvailable = fileInputStream.available(); 
      bufferSize = Math.min(bytesAvailable, maxBufferSize); 
      bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     } 
     Log.i(TAG,"publishFileToServer Called...7"); 
     outputStream.writeBytes(lineEnd); 
     outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 
     Log.i(TAG,"publishFileToServer Called...8"); 
     // Responses from the server (code and message) 
     int serverResponseCode = connection.getResponseCode(); 
     Log.i(TAG,"publishFileToServer: ServerResponseCode = "+serverResponseCode); 
     String serverResponseMessage = connection.getResponseMessage(); 
     Log.i(TAG,"publishFileToServer: ServerResponseMessage = "+serverResponseMessage); 
     Log.i(TAG,"publishFileToServer Called...9"); 
     fileInputStream.close(); 
     outputStream.flush(); 
     outputStream.close(); 
     Log.i(TAG,"publishFileToServer Called...10"); 
    } 
    catch (Exception ex) 
    { 
     Log.e(TAG,"publishFileToServer: "+ex.getMessage()); 
    } 

私は、テキストファイルをアップロードするには、この同じコードを使用することを顕著だAN、それは私がそれを絞り込むしようとしました、でも、GPRS上で正常に動作し、私のアプリケーションは、右の前の問題に入ります私が画像をアップロードしているときのgetResponse()メソッド

答えて

0

明らかに、sdkの再インストール後に問題が解消しました。

0

あなたはアクティビティの中からこれをやっていますか?

がサービスを使用して、Wi-Fi付きのAsyncTask

に入れて、待ち時間なしにほとんどありません。セルネットワークでは、レイテンシが十分にあるので、あなたの要求はUIスレッドをブロックする可能性が最も高いです。

+0

私はprocessDialogを使用していますが、このコードは独立したスレッド内に存在します。 getResponse()になると、LogCatにそこだけがハングアップします。私は家などをクリックすると、エミュレータの他のすべてが正常に動作しますが、もし私がアプリケーションに戻ってきたら、まだ処理しています。そして、LogCatで、アプリケーションから見える最後のメッセージはgetResponse()メソッドの上です。 –

関連する問題