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:

日志猫

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","Email":"xxx@hotmail.com"}]

4

3 回答 3

0

如果你想解析 JSON,那么你应该提供 JSON,而不是 html。显然你收到了一个“< html >”标签!

如果我是你,我会修复我的 web 服务并使用gson将 json 转换为 java 对象!

于 2013-11-14T20:37:31.493 回答
0

看起来您试图将非 JSON 格式的字符串转换为导致错误的 json 对象。您应该打印出 html 响应以查看整个内容并将其发布在此处。

于 2013-11-14T20:37:57.540 回答
0

再看这个问题,我很确定我的专业知识没什么用。对不起。

于 2013-11-14T21:58:04.687 回答