androidでweb上のjsonのデータを読み込もうとしていますが
実行後問題が発生してアプリが終了してしまいます。
どなたか助けてください。
manifestsには <uses-permission android:name="android.permission.INTERNET" />を記入しています。
あとライブラリーはApache HttpComponentsを使っています。
エラーログは以下のようになっています。
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime: Process: com.tes.test.myapplication, PID: 18097
E/AndroidRuntime: java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime: at android.os.AsyncTask$3.done(AsyncTask.java:300)
E/AndroidRuntime: at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
E/AndroidRuntime: at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
E/AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)
E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Illegal character in path at index 0: [Ljava.lang.String;@3495432c
E/AndroidRuntime: at java.net.URI.create(URI.java:730)
E/AndroidRuntime: at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
E/AndroidRuntime: at com.tes.test.myapplication.MainActivity$AsyncHttpRequest.doInBackground(MainActivity.java:41)
E/AndroidRuntime: at com.tes.test.myapplication.MainActivity$AsyncHttpRequest.doInBackground(MainActivity.java:28)
E/AndroidRuntime: at android.os.AsyncTask$2.call(AsyncTask.java:288)
E/AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)
ソースは以下のようになっています。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "http://192.168.1.1/keziban/api/Post_api.php";//ローカルネット AsyncHttpRequest task = new AsyncHttpRequest(this); task.execute(url); } public class AsyncHttpRequest extends AsyncTask<String,Void,String> { private Activity MainActivity; public AsyncHttpRequest(Activity activity) { this.MainActivity = activity; } @Override protected String doInBackground(String...builder) { DefaultHttpClient objHttp = new DefaultHttpClient(); HttpParams params = objHttp.getParams(); HttpConnectionParams.setConnectionTimeout(params, 1000); //接続のタイムアウト HttpConnectionParams.setSoTimeout(params, 1000); //データ取得のタイムアウト String sReturn = ""; try { HttpGet objGet = new HttpGet(builder.toString()); HttpResponse objResponse = objHttp.execute(objGet); if (objResponse.getStatusLine().getStatusCode() < 400){ InputStream objStream = objResponse.getEntity().getContent(); InputStreamReader objReader = new InputStreamReader(objStream); BufferedReader objBuf = new BufferedReader(objReader); StringBuilder objJson = new StringBuilder(); String sLine; while((sLine = objBuf.readLine()) != null){ objJson.append(sLine); } sReturn = objJson.toString(); objStream.close(); } } catch (IOException e) { return null; } return sReturn; } @Override protected void onPostExecute(String result) { //TextView tv = (TextView) MainActivity.findViewById(R.id.name); //tv.setText(result); } }
どうかよろしくおねがいします。
回答2件
あなたの回答
tips
プレビュー