0

私は小さなAndroidアプリを実行して、Webサービスでホストされているデータベースからデータを取得しようとしています.次の大量のコードがありますが、いくつかのエラーが発生しています.

MainActivity.java

  public class MainActivity extends Activity {

TextView Name;
TextView ID;
TextView Email;
private static String url = "http://HostName/GetData.php";
private static final String TAG_Name = "Name";
private static final String TAG_ID = "Id";
private static final String TAG_Email = "Email";

JSONArray user = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new JSONParse().execute();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
private class JSONParse extends AsyncTask<String, String, JSONObject>
{
    private ProgressDialog pDialog;

    @Override
    protected void onPreExecute(){
        super.onPreExecute();
        Name = (TextView) findViewById(R.id.textView4);
        ID = (TextView) findViewById(R.id.textView5);
        Email = (TextView) findViewById(R.id.textView6);

        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Getting Data ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @Override
    protected JSONObject doInBackground(String... args) {
        JSONParser jParser = new JSONParser();

        // Getting JSON from URL
        JSONObject json = jParser.getJSONFromUrl(url);
        return json;
    }

    @Override
    protected void onPostExecute(JSONObject json) {
        pDialog.dismiss();
        try {
               // Getting JSON Array
               user = json.getJSONArray(TAG_Name);
               JSONObject c = user.getJSONObject(0);

               // Storing  JSON item in a Variable
               String Name1 = c.getString(TAG_Name);
               String ID1 = c.getString(TAG_ID);
               String Email1 = c.getString(TAG_Email);

               //Set JSON Data in TextView
               Name.setText(Name1);
               ID.setText(ID1);
               Email.setText(Email1);

       } catch (JSONException e) {
           e.printStackTrace();
       }

    }

}
 }

JSONParser.java:

 public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";

// constructor
public JSONParser() {

}

public JSONObject getJSONFromUrl(String url) {

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();           

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;
}

}

私は次のLogCatを持っています:

LogCat

PHP ファイル:

<?php
header('Content-type=application/json; charset=utf-8');
$con = mysql_connect("***","***","***");

if (!$con)
    {
    die('Could not Connect:' . mysql_error());
    }

mysql_select_db("database_name",$con);

$result = mysql_query("SELECT * FROM database_name");

while($row = mysql_fetch_assoc($result))
    {
       $output[]=$row;
    }

print(json_encode($output));

mysql_close($con);

?>

PHP の応答は次のとおりです。

[{"名前":"Izzo32","ID":"5554","電子メール":"xxx@hotmail.com"}]

4

3 に答える 3

0

質問をもう一度見てみると、私の専門知識はほとんど役に立たないと確信しています。ごめん。

于 2013-11-14T21:58:04.687 に答える
0

非 JSON 形式の文字列を json オブジェクトに変換しようとしているように見えますが、これがエラーの原因です。HTML 応答を印刷して全体を確認し、ここに投稿する必要があります。

于 2013-11-14T20:37:57.540 に答える