JSON
アプリでデータをダウンロードするために Web サービスを使用しています。ただし、データをダウンロードできずJSON
、null 値を返す場合があります。また、サーバーに Amazon Web Service を使用していることにも言及する必要があります。
データのダウンロードがエラーなしで行われることもあれば、null 例外がスローされることもあるため、問題のある Web サービスまたは自分のコードで何かを行う必要があるかどうか、私は混乱しています。AsyncTask
以下のコードを使用してデータをダウンロードしています。
私を助けてください !
public synchronized JSONArray getJSONArrayFromUrl(String url) {
JSONArray jArray = null;
String json = getJSONString(url);
try {
jArray = new JSONArray(json);
} catch (Exception e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
return jArray;
}
public synchronized JSONObject getJSONObjectFromUrl(String url) {
JSONObject jObj = null;
String json = getJSONString(url);
try {
jObj = new JSONObject(json);
} catch (Exception e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
return jObj;
}
public synchronized String getJSONString(String url)
{
try {
URL url1 = new URL(url);
URLConnection tc = url1.openConnection();
tc.setConnectTimeout(timeout);
tc.setReadTimeout(timeout);
BufferedReader br = new BufferedReader((new InputStreamReader(tc.getInputStream())),8000);
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
return sb.toString();
}
catch(Exception e)
{
Log.d("Error","In JSON downloading");
}
return null;
}
ログキャット:
01-30 09:55:09.232: E/JSON Parser(18228): Error parsing data java.lang.NullPointerException
01-30 09:55:09.232: W/System.err(18228): java.lang.NullPointerException
01-30 09:55:09.232: W/System.err(18228): at com.ex.feeds.SetupFeeds.doInBackground(SetupFeeds.java:69)
01-30 09:55:09.232: W/System.err(18228): at com.ex.feeds.SetupFeeds.doInBackground(SetupFeeds.java:1)
01-30 09:55:09.232: W/System.err(18228): at android.os.AsyncTask$2.call(AsyncTask.java:264)
01-30 09:55:09.232: W/System.err(18228): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-30 09:55:09.232: W/System.err(18228): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-30 09:55:09.232: W/System.err(18228): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
01-30 09:55:09.232: W/System.err(18228): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-30 09:55:09.232: W/System.err(18228): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-30 09:55:09.237: W/System.err(18228): at java.lang.Thread.run(Thread.java:856)