-3

yahooapiを使って天気情報を知りたいのですが。ただし、次のステートメントを実行するとエラーが発生します。それを解決するためのヒントを教えてください。ありがとう。

HttpClient httpClient = new DefaultHttpClient();

HttpGet httpGet = new HttpGet(queryString);

HttpEntity httpEntity = httpClient.execute(httpGet).getEntity();  // <--- error here

mainfestにインターネット許可を追加しました。

03-01 22:06:27.310: E/AndroidRuntime(27723): FATAL EXCEPTION: main
03-01 22:06:27.310: E/AndroidRuntime(27723): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.exercise.AndroidYahooWeatherDOM/com.exercise.AndroidYahooWeatherDOM.AndroidYahooWeatherDOMActivity}: android.os.NetworkOnMainThreadException
03-01 22:06:27.310: E/AndroidRuntime(27723):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
03-01 22:06:27.310: E/AndroidRuntime(27723):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
03-01 22:06:27.310: E/AndroidRuntime(27723):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
03-01 22:06:27.310: E/AndroidRuntime(27723):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
03-01 22:06:27.310: E/AndroidRuntime(27723):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-01 22:06:27.310: E/AndroidRuntime(27723):    at android.os.Looper.loop(Looper.java:137)
4

1 に答える 1

0

AsyncTaskHTTP接続を行うには、別のスレッドまたはより良いものを使用する必要があります

例えば:

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
 protected Long doInBackground(URL... urls) {
     int count = urls.length;
     long totalSize = 0;
     for (int i = 0; i < count; i++) {
         totalSize += Downloader.downloadFile(urls[i]);
         publishProgress((int) ((i / (float) count) * 100));
         // Escape early if cancel() is called
         if (isCancelled()) break;
     }
     return totalSize;
 }

 protected void onProgressUpdate(Integer... progress) {
     setProgressPercent(progress[0]);
 }

 protected void onPostExecute(Long result) {
     showDialog("Downloaded " + result + " bytes");
 }
}
于 2013-03-01T14:18:08.590 に答える