########################################################
前提・実現したいこと
Http通信を用いてリクエストを送信したページのXMLかJSONをアンドロイド上に受け取り表示がしたいです
最終的にはボタンを押すとオープンストリートマップにリクエストを送信し地図上のデータを取得することが目的です。
・ボタンを押すとアプリは落ちずエラーはおきませんがnullが返ってくるようになりました。
・UnsupportedEncodingExceptionの部分でThere is more general expection,,in the throwsList alredyがでるようになりました。
・java.io.FileNotFoundException:というエラーが返ってきます
解決するためにどうすればよいか教えて頂ければ幸いです
###エラーメッセージ
W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
D/NetworkSecurityConfig: No Network Security Config specified, using platform default
java.io.FileNotFoundException: http://api.openstreetmap.org/api/0.6/map?bbox=11.54,48.14,11.543,48.145
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250)
at com.example.ichita_miura.httptest6.HttpResponsAsync.doInBackground(HttpResponsAsync.java:56)
at android.os.AsyncTask$2.call(AsyncTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
###コード
MainActivity
package com.example.ichita_miura.httptest6; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.Button; public class MainActivity extends AppCompatActivity { private TextView textView; private Button buttonStart, buttonClear; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView =(TextView)findViewById(R.id.text_view); buttonStart = (Button)findViewById(R.id.button_start); buttonStart.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view){ startAsync(); } }); buttonClear = (Button)findViewById(R.id.button_clear); buttonClear.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view){ setTextView(String.valueOf(0)); } }); } private void startAsync(){ HttpResponsAsync httpResponsAsync = new HttpResponsAsync(this); httpResponsAsync.execute(); } public void setTextView(String testout){ textView.setText(String.valueOf(testout)); } } コード
AsyncTask
package com.example.ichita_miura.httptest6; import android.os.AsyncTask; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import org.json.JSONException; import org.json.JSONObject; public class HttpResponsAsync extends AsyncTask<Void, Void, String> { private MainActivity mainActivity; public HttpResponsAsync(MainActivity activity){ mainActivity = activity; } @Override protected void onPreExecute() { super.onPreExecute(); // doInBackground前処理 } @Override protected String doInBackground(Void... params) { HttpURLConnection con = null; URL url = null; String urlst = "https://www.googleapis.com/books/v1/volumes?q=android"; //String urlst ="http://api.openstreetmap.org/api/0.6/map?bbox=11.54,48.14,11.543,48.145"; try { url = new URL(urlst); con = (HttpURLConnection)url.openConnection(); // リクエストメソッドの設定 con.setRequestMethod("POST"); // リダイレクトを自動で許可しない設定 con.setInstanceFollowRedirects(false); // URL接続からデータを読み取る場合はtrue con.setDoInput(true); // URL接続にデータを書き込む場合はtrue con.setDoOutput(true); // 接続 con.connect(); // ① InputStream in = con.getInputStream(); byte bodyByte[] = new byte[1024]; String readSt = readInputStream(in); //JSONObject jsonData = new JSONObject(readSt).getJSONObject("オブジェクト名"); //JSONArray jsonArray = new JSONObject(readSt).getJSONArray("オブジェクト名"); //String St = jsonData.getString("オブジェクト名"); in.read(bodyByte); in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //catch (JSONException e){ //e.printStackTrace(); // } return null; } @Override protected void onPostExecute(String result) { mainActivity.setTextView(result); super.onPostExecute(result); // doInBackground後処理 } public String readInputStream(InputStream in)throws IOException, UnsupportedEncodingException{ StringBuffer sb = new StringBuffer(); String st = ""; BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8")); while ((st = br.readLine()) != null) { sb.append(st); } try { in.close(); }catch (Exception e){ e.printStackTrace(); } return sb.toString(); } }
###試したこと
Http通信の記事を読みためしていましたが一向にうまくいっていません
###補足情報(言語/FW/ツール等のバージョンなど)
AndroidStudio使用
プログラミング初心者です
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/15 11:48