0

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)
4

3 に答える 3

0

AWS が失敗することはめったにありません。ヘルスチェックと通知が設定されていますか? あなたはこの質問をしているので、おそらくそうではありません-なぜこれを設定しないのですか?

興味深いことに、connect()URLConnection を呼び出すことはありませんね。あなたは本当にすべきです。;)

ほとんどの場合、NullPuinterException の前に、コードはメッセージを生成できるはずです。どれを見ますか?

于 2013-01-30T08:23:23.357 に答える
-1

まず、この public class Quesans extends Activity{JSONParser jsonParser = new JSONParser();ArrayList questionDatas = new ArrayList();JSONObject json;JSONArray groups = null;int i, k = 0;RadioGroup btn_practiceerg;RadioButton btn_practice1;RadioButton btn_practice2; RadioButton btn_practice3;RadioButton btn_practice4;private ProgressDialog pDialog; プライベート文字列名 = "";プライベート文字列 tid = ""; プライベート文字列蓋 = "";プライベート文字列 gid = "";プライベート文字列 id = ""; private static final String TAG_SUCCESS = "success";private static final String TAG_GROUP = "group";private static final String TAG_QUES = "ques";private static final String TAG_QUESID = "id";private static final String TAG_ANSW = "answ";

于 2013-01-30T11:18:24.503 に答える
-1

パブリックで同期された String getJSONString(String url) {...... ...... return null; null値を返しています。末尾にも sb.tostring を渡します

于 2013-01-30T08:21:17.940 に答える