0

タイムテーブルアプリケーションが完了しました。タイムテーブルはwampサーバーに保存され、AndroidアプリはテーブルをフェッチしてAndroidのsqliteDBに保存します。Jsonparsingを使用してサーバーからデータを取得しました。

www.000webhost.comでテーブルをホストできませんでした。androidlogcatで、Json解析で警告とエラーが発生します。

閲覧すると、wampで使用したphpは3.4ですが、上記のWebサイトでは3.2であり、json配列をサポートしていません。

この問題を解決する方法はありますか?Jsonアレイをサポートするホストする他の無料のWebサイトはありますか?

これが私のコードの一部です。

private class GrabURL extends AsyncTask<String, Void, Void>
{
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();;

    private ProgressDialog Dialog = new ProgressDialog(MainActivity.this);

    protected void onPreExecute() 
    {
        Dialog.setMessage("Loading...");
        Dialog.show();
        nameValuePairs.add(new BasicNameValuePair("DEPT",DEPT));
        nameValuePairs.add(new BasicNameValuePair("SEM",SEM));
        nameValuePairs.add(new BasicNameValuePair("DIV",DIV));
    }
    protected Void doInBackground(String... urls)
    {
       try{
              HttpClient httpclient = new DefaultHttpClient();
              HttpPost httppost = new HttpPost(url);
              httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
              response=httpclient.execute(httppost);
              inputStream = response.getEntity().getContent();

          }
          catch(Exception e)
          {
              Dialog.dismiss();
              Toast.makeText(getBaseContext(), "Check your internet connection", Toast.LENGTH_SHORT).show();
              Log.e("log_tag", "Error in http connection "+e.toString());

          }


       return null;
    }
    protected void onPostExecute(Void unused)
    {
         try{
           BufferedReader reader = new BufferedReader(new InputStreamReader(
                    inputStream, "iso-8859-1"), 8);

            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

            inputStream.close();
             json = sb.toString();
       }
       catch (Exception e) {
              Log.e("Buffer Error", "Error converting result " + e.toString());
          }
       try{
           JSONArray jarray = new JSONArray(json);
        SQLiteDatabase db=openOrCreateDatabase("Mydb", MODE_PRIVATE,null);
        db.execSQL("DROP TABLE IF EXISTS stores;");
        db.execSQL("CREATE TABLE IF NOT EXISTS stores(day VARCHAR,first VARCHAR,sec VARCHAR," +
                "third VARCHAR,fourth VARCHAR,fifth VARCHAR,sixth VARCHAR," +
                "seventh VARCHAR,eighth VARCHAR);");
        db.execSQL("INSERT INTO stores VALUES('DAY','8-9','9-10','10:15-11:15','11:15-12:15'," +
                "'12:30-1:30','1:30-2:30','2:45-3:45','3:45-4:45');");
           for (int i=0; i < (jarray.length()); i++)
           {
             JSONObject oneObject = jarray.getJSONObject(i);
          SQLiteDatabase db1=openOrCreateDatabase("Mydb", MODE_PRIVATE,null);

          db1.execSQL("INSERT INTO stores ( day,first,sec,third,fourth,fifth,sixth,seventh,eighth) " +
                "VALUES ( ?, ?, ?, ?, ?, ?, ?, ?,? )",
                new Object [] {
               strday = oneObject.getString("day"),
               strone = oneObject.getString("8-9"),
               strtwo = oneObject.getString("9-10"),
               strthree = oneObject.getString("10:15-11:15"),
               strfour = oneObject.getString("11:15-12:15"),
               strfive = oneObject.getString("12:30-1:30"),
               strsix = oneObject.getString("1:30-2:30"),
               strseven = oneObject.getString("2:45-3:45"),
               streight = oneObject.getString("3:45-4:45")
        }
                  );
        db1.close();
        Dialog.dismiss(); 
           }
        Toast.makeText(getBaseContext(), "Successfully saved.", Toast.LENGTH_SHORT).show();
           db.close();

       }
       catch (Exception e) {
            e.printStackTrace();
         Log.e("log_tag", "oops!! error in saving"+e.toString());
        Toast.makeText(getBaseContext(), "oops!! error in saving ur  time table", Toast.LENGTH_SHORT).show();
        Toast.makeText(getBaseContext(), "Your Time Table is not available", Toast.LENGTH_SHORT).show();
        }



    }
}
public void grabURL(String url)
{
    new GrabURL().execute(url);
}

ログ猫...

12-18 18:27:59.373: W/KeyCharacterMap(1014): No keyboard for id 0
12-18 18:27:59.373: W/KeyCharacterMap(1014): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
12-18 18:28:37.283: D/dalvikvm(1014): GC_EXTERNAL_ALLOC freed 167K, 51% free 2716K/5511K, external 513K/517K, paused 51ms
12-18 18:28:38.643: D/dalvikvm(1014): GC_FOR_MALLOC freed 66K, 50% free 2827K/5639K, external 518K/1030K, paused 47ms
12-18 18:28:39.363: W/System.err(1014): org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONArray
12-18 18:28:39.363: W/System.err(1014):     at org.json.JSON.typeMismatch(JSON.java:107)
12-18 18:28:39.363: W/System.err(1014):     at org.json.JSONArray.<init>(JSONArray.java:91)
12-18 18:28:39.363: W/System.err(1014):     at org.json.JSONArray.<init>(JSONArray.java:103)
12-18 18:28:39.363: W/System.err(1014):     at com.exam.allabouttable.MainActivity$GrabURL.onPostExecute(MainActivity.java:195)
12-18 18:28:39.373: W/System.err(1014):     at com.exam.allabouttable.MainActivity$GrabURL.onPostExecute(MainActivity.java:1)
12-18 18:28:39.373: W/System.err(1014):     at android.os.AsyncTask.finish(AsyncTask.java:417)
12-18 18:28:39.373: W/System.err(1014):     at android.os.AsyncTask.access$300(AsyncTask.java:127)
12-18 18:28:39.373: W/System.err(1014):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
12-18 18:28:39.373: W/System.err(1014):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-18 18:28:39.373: W/System.err(1014):     at android.os.Looper.loop(Looper.java:123)
12-18 18:28:39.373: W/System.err(1014):     at android.app.ActivityThread.main(ActivityThread.java:3683)
12-18 18:28:39.373: W/System.err(1014):     at java.lang.reflect.Method.invokeNative(Native Method)
12-18 18:28:39.373: W/System.err(1014):     at java.lang.reflect.Method.invoke(Method.java:507)
12-18 18:28:39.383: W/System.err(1014):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-18 18:28:39.383: W/System.err(1014):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-18 18:28:39.383: W/System.err(1014):     at dalvik.system.NativeStart.main(Native Method)
12-18 18:28:39.383: E/log_tag(1014): oops!! error in savingorg.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONArray
12-18 18:36:29.023: I/dalvikvm(1014): Jit: resizing JitTable from 512 to 1024
4

2 に答える 2

0

申し訳ありませんが、ここで回答されている問題を解決しました

データを取得するために、HttpPost を HttpGet に変更しました。

于 2013-11-16T16:41:13.300 に答える
0

ログから、渡す文字列がnew JSONArray()有効な JSON ではないように見えます。文字列が有効であることを確認してください。有効であることを確認するためだけに、文字列を渡す前に印刷してください。

于 2012-12-19T21:15:10.210 に答える