2012-01-19 1 views
2

次のコードは、Android Galaxy Nexus v4.0.2で動作していないため、エミュレータや他の古いデバイスで動作します。古いデバイスとemuで動作している場合、変数 "is"は必要に応じてすべてのバイトを取得しており、すべてが良好です。 Nexus上で動作している間、 "is"と "is"に例外が見つからないファイルがスローされます。次に、 "is"がnullのため、nullポインタをスローします。このファイルが見つかりませんでしたエラーを修正する方法はありますか?ファイルは他のデバイス/ emu/browserで到達可能です。Android Nexus v4.0.2のHttpURLConnectionに関する問題

私はjava.io.FileNotFoundExceptionを取得しています:at = urlConnection.getInputStream();ここで

コードです:

// GET 
InputStream is = null; 
    try { 
     // set the URL that points to a file to be downloaded 
     URL url = new URL(downloadURL); 

     // create the new connection 
     HttpURLConnection urlConnection = (HttpURLConnection) url 
       .openConnection(); 

     // set up some things on the connection 
     urlConnection.setRequestMethod("GET"); 
     urlConnection.setDoOutput(true); 

     // connect and download 
     urlConnection.connect(); 

     // used in reading the data from the internet 
     is = urlConnection.getInputStream(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
+0

非常に興味深い。 setDoOutput()を呼び出すときは、trueではなくfalseにする必要があります。これを変更すると問題が解決されたようです。質問は、これがこのデバイス/ osにのみ影響し、他のすべてのデバイス/ osには影響しないのはなぜですか? Hmmm –

+0

同じ振る舞いをしていましたが、setDoOutputがどのように影響して最終的にio例外が生成されるかはわかりません。メソッドがtrueで呼び出されました。リクエストボディが送信されなかったとしても。偽に変更して私の問題を解決しました。 –

答えて

3

urlConnection.setDoOutput(true);

は次のようになります。

urlConnection.setDoOutput(偽);

0

urlConnection.setDoOutput(true)効果的にPOSTに方法を変更するので、おそらくあなたのサーバがPOSTに応答しませんか?

HTTPUrlConnectionは、確かに醜いと混乱のインターフェイスを持っています。最近の特集記事は次のとおりです。 http://www.tbray.org/ongoing/When/201x/2012/01/17/HttpURLConnection

+0

しかし、それが理由であれば、それは古いバージョンのAndroidで動作する理由であり、v4では動作しません。それはクライアント上の問題であるようです。 –

+0

バグが修正されたか、新しいバグが導入された可能性があります。特定の2つのバージョンを特定できれば、diffを実行するのは難しいことではありません。 –

関連する問題