Я пытаюсь получить данные JSON из php-файла с приведенным ниже кодом в моем фрагменте, но каждый раз, когда я запускаю код, система всегда возвращает Toast, вызванный, когда result=false
указывает, что данные не были выбраны.В чем может быть проблема, вызывающая сбой выборки данных?
Вот код для файла inded.php, содержащего данные JSON.
<?php
$arr = array ( "properties" => array(
array(
"companyName" => "Motorola",
"name" => "Moto"
),
array(
"companyName" => "Sony",
"name" => "xPeria"
),
array(
"companyName" => "Infinix",
"name" => "S2 Pro"
)
)
);
echo json_encode($arr);
?>
Ниже приведен код в onCreateView()
фрагмент фрагмента.
new JSONAsynTask().execute("http://buvick-group.com/app/index.php");
Ниже приведен код для моего JSONAsynTask()
класса.
class JSONAsynTask extends AsyncTask<String, Void, Boolean> {
String result;
ProgressDialog dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(getActivity());
dialog.setMessage("Loading, please wait");
dialog.setTitle("Connecting server");
dialog.show();
dialog.setCancelable(false);
}
@Override
protected Boolean doInBackground(String... urls) {
try {
HttpGet httppost = new HttpGet(urls[0]);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
int status = response.getStatusLine().getStatusCode();
Log.e(TAG, "HTTP Internet Result: " + String.valueOf(status));
if (status == 200) {
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
JSONObject jsono = new JSONObject(data);
JSONArray jarray = jsono.getJSONArray("properties");
Log.e(TAG, "JSON Result Length: " + String.valueOf(jarray.length()));
for (int i = 0; i < jarray.length(); i++) {
JSONObject object = jarray.getJSONObject(i);
Property property = new Property();
property.setName(object.getString("companyName"));
property.setDescription(object.getString("name"));
propertiesList.add(property);
}
return true;
}
} catch (ParseException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
protected void onPostExecute(Boolean result) {
dialog.dismiss();
adapter.notifyDataSetChanged();
if(result == false)
Toast.makeText(getActivity(), "Unable to fetch data from server", Toast.LENGTH_LONG).show();
}
}
Любая помощь будет принята с благодарностью.Заранее спасибо.