私はこのAPIからデータを読み込もうとしています:http://events.makeable.dk/api/getEvents AsyncTaskメソッドでこれは初めてです。私はAPIからすべてのタイトルを読むことを試みていますが、私はタイトルを取得していません。私の非同期で私のPostExecute dosn'tは実行されません
代わりに、この例外が発生します。W/System.err: org.json.JSONException: (...)
私はAPI全体を示しています。
私はLog.d()を入れました。私のコードの周りと私は自分のコードは決して何かに到達するか、onPostExecute(String s)
で何かに達することができますし、thatsはおそらく私は決してタイトルを得ることはありません。
これを行う方法のウェブ上の多くの例は、お互いに非常に異なっており、これを解決するには非常にイライラしています!
private class JsonParser extends AsyncTask<String, Void, String> {
HttpURLConnection conn;
URL url = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(MainActivity.this, "LOADING DATA FROM API", Toast.LENGTH_SHORT).show();
}
@Override
protected String doInBackground(String... params) {
try{
url = new URL(URL);
conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
InputStream inputStream = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder result = new StringBuilder();
String line;
while ((line = reader.readLine())!= null){
result.append(line);
}
return (result.toString());
}
}catch (MalformedURLException e){
e.printStackTrace();
}catch (Exception ee){
ee.printStackTrace();
}
return "";
}
@Override
protected void onPostExecute(String s) {
//------ never comes below this area //-----------
try{
JSONArray jsonArray = new JSONArray(s);
for(int i =0; i<jsonArray.length(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.d("TAG", "JSON: " + jsonObject.getString("TITLE"));
}
}catch (Exception e){
e.printStackTrace();
}
}
}
あなたは ''キャッチ(例外e)ことがわかりましたか? – Blackbelt
forループの前に 'onPostExecute'で例外がスローされています。あなたのJSONが正しくフォーマットされていないので、 'JSONArray(s)'は例外をスローします。 – Sunshinator
'GET'リクエストで' conn.setDoOutput(true); 'は必要ありません。 – Enzokie