为了账号安全,请及时绑定邮箱和手机立即绑定

在 Fragment 中获取 JSON 数据时连接到服务器时出错

在 Fragment 中获取 JSON 数据时连接到服务器时出错

暮色呼如 2021-10-27 19:13:48
我正在尝试使用片段中的以下代码从 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");任何帮助将不胜感激。先感谢您。
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您的 JSON 需要重新设计。这是为您的android json解析代码生成正确json的代码


<?php

$response = array();

$response["code"] = 200;

$response["properties"] = array();


for($i = 0; $i < 6; $i++) {

    $item = array();

    $item["companyName"] = "Company ".$i;

    $item["name"] = "Model ".$i;

    array_push($response["properties"],  $item );


}



echo json_encode($response);


?>

这将打印


{

"code":200,

"properties":[

{

"companyName":"Company 0",

"name":"Model 0"

},

{

"companyName":"Company 1",

"name":"Model 1"

},

{

"companyName":"Company 2",

"name":"Model 2"

},

{

"companyName":"Company 3",

"name":"Model 3"

},

{

"companyName":"Company 4",

"name":"Model 4"

},

{

"companyName":"Company 5",

"name":"Model 5"

}

]

}


查看完整回答
反对 回复 2021-10-27
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

在@UmangBurman 的大量帮助下,我能够找到问题的根源。问题是 JSON 数据。使用 JSON 数据格式和正确的JSONAsynTask,我希望这个问题能帮助将来有人在他们的代码中形成基础。我已更新问题中的代码以显示调试版本。干杯


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信