【发布时间】:2018-10-04 11:10:54
【问题描述】:
我正在尝试使用片段中的以下代码从 php 文件中获取 JSON 数据,但每次运行代码时,系统总是返回在 result=false 时调用的 Toast,表明未获取数据。导致数据提取失败的问题可能是什么?
这是包含 JSON 数据的 inded.php 文件的代码。
<?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();
}
}
任何帮助将不胜感激。先感谢您。
【问题讨论】:
-
你能检查并告诉你得到的状态吗?
-
如果你在上面调用 url 那么你解析它是错误的,因为它没有任何 JsonArray。
-
@UmangBurman 的状态为 200。我已按上述方式修改了我的代码
-
当我在线测试时,您的 php 代码给了我
false。 @比科 -
谢谢@UmangBurman ...问题出在json数据中。我已经修改了php代码。数据格式不正确。干杯
标签: java android json android-fragments httpclient