0

アプリケーションの一部に問題があります。あるケースでは、json ストリームで http リクエストを使用してデータを取得しましたが、非常にうまく機能しました。しかし、別のケースでは、ユーザーの場所を使用してデータを取得する必要があります。ロケーションプロバイダーを使用した後、http リクエストが正しく機能しませんでした。この問題は、アプリケーションをテストする必要がある 2 つのデバイスのうちの 1 つにのみ発生します。最初のもの、Android 2.3.6を搭載したスマートフォンでは、問題ありません。しかし、それは問題が発生する2番目のデバイスにあります。Android 4.0.4のギャラクシータブです(最近アップデートしましたが、以前は3.0.1でしたが、問題は同じでした)。私のアプリケーションはsdk 10(Android 2.3.3)でコンパイルされています

バグが発生したときにスローされる例外をキャッチしようとしますが、例外のメッセージは null で、何が問題なのかわかりません。アニボディはまだこの種のバグに遭遇していますか?

アクティビティのソース コードは次のとおりです。ボタンをクリックすると、実行可能な doRechercheGeoloc が起動されます。

private Runnable doRechercheGeoloc = new Runnable(){

    public void run() {
        // TODO Auto-generated method stub
        getProvider = true;

        LocationListener locationListener = new LocationListener(){
            public void onLocationChanged(Location newLocation) {
                // TODO Auto-generated method stub
                Log.i("*", "GPS : location changed");
                location = newLocation;
            }

            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub
                Log.i("*", "GPS : provider disabled");
            }

            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub
                Log.i("*", "GPS : provider enable");
            }

            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
                // TODO Auto-generated method stub
                Log.i("*", "GPS : status changed");
            }
        };

        lm = (LocationManager) getSystemService( AnnuaireActivity.LOCATION_SERVICE );
        Log.i("*", "le GPS est activé");
        lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        lm.removeUpdates(locationListener);
        lm = null;
        getProvider = true;
        lm = null;

        handler.postAtFrontOfQueue(doRecherchePourGeoloc);

    }

};

そして、http接続を行うjsonパーサーのコード:

public class JsonParser {

...

private String getJson(String url) throws Exception{

    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet get = new HttpGet( url );

    try{

                    //this is this instruction that provoque the error
        HttpResponse response = client.execute( get );
        StatusLine statusline = response.getStatusLine();
        int statuscode = statusline.getStatusCode();

        if (statuscode == 200){
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader( new InputStreamReader(content) );
            String line;
            while((line = reader.readLine()) != null){
                builder.append(line);
            }
        }else{
            Log.e("*", JsonParser.class.toString() + " : Failed to download file");
            throw new Exception(JsonParser.class.toString() + " : Failed to download file");
        }

    }catch( ClientProtocolException e ){
        Log.e("*", "JsonParser.getJson() : ClientProtocolException : " + e.getMessage());
        throw e;//
    }catch( IOException ioe ){
        Log.e("*", "JsonParser.getJson() : IOException : " + ioe.getMessage());
        throw ioe;//
    }catch( Exception e ){
        Log.e("*", "JsonParser.getJson() : Exception : " + e.getMessage());//the erreur is throwing from here and the message is null
        throw e;
    }

    return builder.toString();
}

...

}

どうも。

4

1 に答える 1

-1

ロギング

どの http パッケージ/jar を使用していますか? WIRE と HEADERS のロギングを有効にする方法を理解してください。

私が使用するパッケージは、実行時にログを取得するために別の http jar を再コンパイル/使用する必要があります。

完全なログをオンにすると、問題を見つけるのに十分なデータが得られるはずです

adb logcat のサンプル WIRE と HEADERS を参照してください。

D/class ch.boye.httpclientandroidlib.impl.client.DefaultHttpClient(18636): Attempt 1 to execute request
D/class ch.boye.httpclientandroidlib.impl.conn.DefaultClientConnection(18636): Sending request: POST /1/files/audio HTTP/1.1
D/ch.boye.httpclientandroidlib.wire(18636): >> "POST /1/files/audio HTTP/1.1[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "X-Parse-Application-Id: 3KxPBTPSTe8f0iexGanSagCztLp6wSPzJkyMLAbR[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "X-Parse-REST-API-Key: kVl5Z0CXmBSCoQRmE8XSLIDFuLGHMCIkLXXjkuI9[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "Content-Type: audio/*[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "Content-Length: 12074[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "Host: api.parse.com[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "Connection: Keep-Alive[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "[\r][\n]"
D/ch.boye.httpclientandroidlib.headers(18636): >> POST /1/files/audio HTTP/1.1
D/ch.boye.httpclientandroidlib.headers(18636): >> X-Parse-Application-Id: 3KxPBTPSTe8f0iexGanSagCztLp6wSPzJkyMLAbR
D/ch.boye.httpclientandroidlib.headers(18636): >> X-Parse-REST-API-Key: kVl5Z0CXmBSCoQRmE8XSLIDFuLGHMCIkLXXjkuI9
D/ch.boye.httpclientandroidlib.headers(18636): >> Content-Type: audio/*
D/ch.boye.httpclientandroidlib.headers(18636): >> Content-Length: 12074
D/ch.boye.httpclientandroidlib.headers(18636): >> Host: api.parse.com
D/ch.boye.httpclientandroidlib.headers(18636): >> Connection: Keep-Alive
D/ch.boye.httpclientandroidlib.wire(18636): >> "--"
D/ch.boye.httpclientandroidlib.wire(18636): >> "cVxX6b-jxQnxFCczaKHLNZ_Hq8HI9AEW219GW3w"
D/ch.boye.httpclientandroidlib.wire(18636): >> "[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "Content-Disposition"
D/ch.boye.httpclientandroidlib.wire(18636): >> ": "
D/ch.boye.httpclientandroidlib.wire(18636): >> "form-data; name="bin"; filename="myfile.3gp""
D/ch.boye.httpclientandroidlib.wire(18636): >> "[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "Content-Type"
D/ch.boye.httpclientandroidlib.wire(18636): >> ": "
D/ch.boye.httpclientandroidlib.wire(18636): >> "application/octet-stream"
D/ch.boye.httpclientandroidlib.wire(18636): >> "[\r][\n]"
D/ch.boye.httpclientandroidlib.wire(18636): >> "[\r][\n]"
D/dalvikvm(18636): GC_CONCURRENT freed 387K, 5% free 11211K/11719K, paused 12ms+3ms, total 38ms
D/dalvikvm(18636): WAIT_FOR_CONCURRENT_GC blocked 12ms
D/ch.boye.httpclientandroidlib.wire(18636): >> "[0x0][0x0][0x0][0x18]ftyp3gp4[0x0][0x0][0x0][0x0]isom3gp4[0x0][0x0][0x2][0xe7]moov[0
于 2012-11-07T15:44:29.300 に答える