私は小さな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","電子メール":"xxx@hotmail.com"}]