いつもありがとうございます。
このプログラムをAndroidStudioで実行すると例外処理になってしまいます。
connect()メソッドから例外処理になってしまいます。
このサンプルプログラムはもともとボタンを押されるとhttpURLConnectionで接続されるプログラムなのですが、
起動時にhttpURLConnectionで値を持ってきたいです。
例外処理の原因を教えて頂けませんでしょうか。
よろしくお願いいたします。
java
1package com.websarva.wings.android.asyncsample; 2 3import android.annotation.SuppressLint; 4import android.os.AsyncTask; 5import android.support.v7.app.AppCompatActivity; 6import android.os.Bundle; 7import android.view.View; 8import android.widget.AdapterView; 9import android.widget.ListView; 10import android.widget.SimpleAdapter; 11import android.widget.TextView; 12 13import org.json.JSONArray; 14import org.json.JSONException; 15import org.json.JSONObject; 16 17import java.io.BufferedReader; 18import java.io.IOException; 19import java.io.InputStream; 20import java.io.InputStreamReader; 21import java.net.HttpURLConnection; 22import java.net.MalformedURLException; 23import java.net.URL; 24import java.util.ArrayList; 25import java.util.HashMap; 26import java.util.List; 27import java.util.Map; 28 29public class WeatherInfoActivity extends AppCompatActivity { 30 31 @Override 32 protected void onCreate(Bundle savedInstanceState) { 33 super.onCreate(savedInstanceState); 34 setContentView(R.layout.activity_weather_info); 35 36 37 //画面部品ListViewを取得 38 ListView lvCityList = findViewById(R.id.lvCityList); 39 //SimpleAdapterで使用するListオブジェクトを用意。 40 List<Map<String, String>> cityList = new ArrayList<>(); 41 //都市データを格納するMapオブジェクトの用意とcityListへのデータ登録。 42 Map<String, String> city = new HashMap<>(); 43 //PlaceGetter place = new PlaceGetter(); 44 45 http h = new http(); 46 URL url = null; 47 String s = null; 48 49 try { 50 url = new URL("https://www.yahoo.co.jp/"); 51 s = h.doInBackground(url); 52 } catch (MalformedURLException e) { 53 e.printStackTrace(); 54 } 55 city.put("name", s); 56 city.put("id", "270000"); 57 cityList.add(city); 58 city = new HashMap<>(); 59 city.put("name", "神戸"); 60 city.put("id", "280010"); 61 cityList.add(city); 62 city = new HashMap<>(); 63 city.put("name", "豊岡"); 64 city.put("id", "280020"); 65 cityList.add(city); 66 city = new HashMap<>(); 67 city.put("name", "京都"); 68 city.put("id", "260010"); 69 cityList.add(city); 70 city = new HashMap<>(); 71 city.put("name", "舞鶴"); 72 city.put("id", "260020"); 73 cityList.add(city); 74 city = new HashMap<>(); 75 city.put("name", "奈良"); 76 city.put("id", "290010"); 77 cityList.add(city); 78 city = new HashMap<>(); 79 city.put("name", "風屋"); 80 city.put("id", "290020"); 81 cityList.add(city); 82 city = new HashMap<>(); 83 city.put("name", "和歌山"); 84 city.put("id", "300010"); 85 cityList.add(city); 86 city = new HashMap<>(); 87 city.put("name", "潮岬"); 88 city.put("id", "300020"); 89 cityList.add(city); 90 //SimpleAdapterで使用するfrom-to用変数の用意。 91 String[] from = {"name"}; 92 int[] to = {android.R.id.text1}; 93 //SimpleAdapterを生成。 94 SimpleAdapter adapter = new SimpleAdapter(WeatherInfoActivity.this, cityList, android.R.layout.simple_expandable_list_item_1, from, to); 95 //ListViewにSimpleAdapterを設定。 96 lvCityList.setAdapter(adapter); 97 //ListViewにリスナを設定。 98 lvCityList.setOnItemClickListener(new ListItemClickListener()); 99 } 100
java
1package com.websarva.wings.android.asyncsample; 2import android.os.AsyncTask; 3 4import java.io.BufferedReader; 5import java.io.IOException; 6import java.io.InputStream; 7import java.io.InputStreamReader; 8import java.net.HttpURLConnection; 9import java.net.MalformedURLException; 10import java.net.ProtocolException; 11import java.net.URL; 12 13public final class http extends AsyncTask<URL, Void, String> { 14 15 @Override 16 protected String doInBackground(URL... urls) { 17 // 取得したテキストを格納する変数 18 final StringBuilder result = new StringBuilder(); 19 // アクセス先URL 20 final URL url = urls[0]; 21 22 HttpURLConnection con = null; 23 try { 24 // ローカル処理 25 // コネクション取得 26 con = (HttpURLConnection) url.openConnection(); 27 con.setConnectTimeout(10000); 28 con.connect(); 29 30 // HTTPレスポンスコード 31 final int status = con.getResponseCode(); 32 if (status == HttpURLConnection.HTTP_OK) { 33 // 通信に成功した 34 // テキストを取得する 35 final InputStream in = con.getInputStream(); 36 final String encoding = con.getContentEncoding(); 37 final InputStreamReader inReader = new InputStreamReader(in, encoding); 38 final BufferedReader bufReader = new BufferedReader(inReader); 39 String line = null; 40 // 1行ずつテキストを読み込む 41 while((line = bufReader.readLine()) != null) { 42 result.append(line); 43 } 44 bufReader.close(); 45 inReader.close(); 46 in.close(); 47 } 48 49 } catch (MalformedURLException e1) { 50 e1.printStackTrace(); 51 } catch (ProtocolException e1) { 52 e1.printStackTrace(); 53 } catch (IOException e1) { 54 e1.printStackTrace(); 55 } finally { 56 if (con != null) { 57 // コネクションを切断 58 con.disconnect(); 59 } 60 } 61 return result.toString(); 62 } 63}