0

JSONArray をインターネットから取得して logcat に表示したいので、Log.e("result ", result); を使用します。

しかし、logcat で JSONArraay が見つからないため、失敗したようです。ここに私のコードを示します。見て、何が問題なのか教えていただければ幸いです。BufferReader を使用してインターネットからテキストを読み取っている人もいますが、私のやり方でも問題ないと思います。

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btnParse;
    ListView listResult;

    btnParse = (Button) findViewById(R.id.btn_parse);

    listResult = (ListView) findViewById(R.id.list_result);

    btnParse.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            JSONArray trial = getJSONData();

        }
    });

}

private JSONArray getJSONData() {

    String url = "http://cloud.culture.tw/frontsite/trans/SearchShowAction.do?method=doFindAllTypeJ";
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(url);

    try {

        HttpResponse httpresponse = httpClient.execute(httpget);

        String result = EntityUtils.toString(httpresponse.getEntity());
        Log.e("result ", result);

        JSONArray jsonarr = new JSONArray(result);
        return jsonarr;

    } catch (Exception err) {
        return null;

    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

4

2 に答える 2

0

Android 3.0 以降、StrictMode はデフォルトで有効になっています。開発者が UI スレッドでネットワーク コードを実行するなどの怠惰な行為を禁止します。アプリケーションがハング/一時停止せず、ユーザーの操作が中断されないように、そのようなコードを非同期で実行する必要があります。AsyncTask/Handler/Volleyなどを使用する必要がないように、これをオフにすることができます。それを処理するのは悪い方法ですが、これを行う 1 つの方法を次に示します (これは行わないでください)。

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy); // Put these two lines before you execute your HTTTP request....

代わりにこれを行ってください:ボレーを 使用してください。ここに簡単なチュートリアルがあります。また、それについての Google トーク.

于 2013-08-19T16:35:00.140 に答える