0

私は Android アプリケーションを作成しています。そのためには、URL から JSON コンテンツを取得する必要があります (Python スクリプトによって出力されます)。

SOでその方法を見つけましたが、うまくいきません。これはコードです:

public String webGet(String URL) throws Exception  
{ 
    BufferedReader in = null; 
    try  
    { 
        HttpClient client = new DefaultHttpClient(); 
        client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android"); 

        HttpGet request = new HttpGet();
        request.setHeader("Content-Type", "text/html; charset=utf-8"); 
        request.setURI(new URI(URL)); 

        // Crashes after executing this line
        HttpResponse response = client.execute(request); 

        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

        StringBuffer sb = new StringBuffer(""); 
        String line = ""; 

        String NL = System.getProperty("line.separator"); 
        while ((line = in.readLine()) != null)  
        { 
            sb.append(line + NL); 
        } 
        in.close(); 
        String page = sb.toString();

        //System.out.println(page); 
        return page; 
    }  
    finally  
    { 
        if (in != null)  
        { 
            try  
            { 
                in.close(); 
            }  
            catch (IOException e)     
            { 
                Log.d("BBB", e.toString()); 
            } 
        } 
    } 
}

このクラッシュは、次の行の後に発生します。

HttpResponse response = client.execute(request);

次に、その部分にジャンプするだけfinallyで、例外メッセージから取得できるのは、何かがnull. それだけです。

問題が何であるか誰にも分かりますか?


例外の説明のスクリーンショット:

ここに画像の説明を入力

4

2 に答える 2

0

例外をスローするのではなく、キャッチするようにしてください。これにより、エラーに関する詳細情報を得ることができます。

try {

} catch (ExceptionType name) {

} catch (ExceptionType name) {

}

http://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html

于 2012-07-18T12:49:25.033 に答える
0

Android の特定のバージョンでは、「メイン」スレッドからネットワーク アクションを実行できません。これは、長時間かかるブロッキングやネットワーク アクションを行ったとしても、アプリがエンド ユーザーに確実に応答できるようにするためです。

そのアクションを別のスレッドで行う必要があります。

Android で FTP に接続できない

于 2012-07-18T12:58:39.123 に答える