4.3

时间:2017-05-10 15:29:00

标签: android

我在Android项目中使用Volley库并尝试使用JsonArrayRequest获取对象数组,我在4.3之前在设备上测试过它并且它不起作用并给出错误消息

  

“string类型的值无法转换为jsonArray”

关于4.3之后的那些。它工作并在Toast消息上提供此JSON

  

[{ “CID”: “9842025166”,其中 “fname”:“ظ†ظط§ظ“ ” “SNAME”: “ظ...طظ...ط”, “TNAME”:“ ظ†طμط§ط± “ ”Faname“:” ط³ظ“ط§ظ......ظ‡ “ ”全名“:” ظ†ظط§ظ“   ظ...طظ...ط¯ظ†طμط§ط±   ط³ظ“ط§ظ......ظ‡ “ ”性别“:” ط£ظ†ط«ظ‰ “ ”国籍“: ”ط£ط±ط¯ظ†ظٹ“, ”手机“: ”9632589632“,”地址 “:” ظ†ظٹط¨طھظ†ظ† “ ”cnumber“: ”“, ”CTYPE“:” ط¹ظ...ظٹظ“   ط¬ط¯ظٹط¯ “ ”FTYPE“: ”طھط·ظظٹط±“, ”fnumber“: ”“, ”homurl“: ”http://192.168.1.3/Officer/HomePictures/9842025166.png“,” projecturl “:” “ ”逸“:” 周三   2017年5月10日   1时57分24" 秒, “经度”: “35.782985”, “纬度”: “31.714081”, “projLangitude”: “0”, “projLatitude”: “0”, “用户”: “111”, “updatinginfo” : “否”, “kafeel”: “否”}]   

这是我的代码

String url = "?NAM=" + "nawal";

            JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Const.Root + Const.NAME + url, new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {


                    Log.d("nn", response.toString());

                    Toast.makeText(getBaseContext(), response.toString(), Toast.LENGTH_LONG).show();

                    for (int i = 0; i < response.length(); i++) {

                        try {

                            JSONObject jsonObject = (JSONObject) response.get(i);

                            String fullname = jsonObject.getString("fullname");

                            String cid = jsonObject.getString("cid");

                            String Fname = jsonObject.getString("Fname");

                            String Sname = jsonObject.getString("Sname");



                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }

            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {


                        Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();

                }
            });

            MySingleton.getInstance(getApplicationContext()).addToRequestQueue(jsonArrayRequest);
  

这是server_side

<?PHP

 include_once("conn.php");

if (isset($_GET['NAM'])
    )

 {

    $NAM=$_GET['NAM'];


$query="SELECT * FROM clients where Fname='$NAM' ";
$result=mysqli_query($conn,$query);



while($row=mysqli_fetch_assoc($result)){

$data[]=$row;

}

echo json_encode($data, JSON_UNESCAPED_UNICODE);
}
?>

1 个答案:

答案 0 :(得分:0)

最后,这是解决方案:

  

对网址进行编码

您不会对整个网址进行编码,只会对来自&#34;不可靠来源的部分网址进行编码&#34;

String urll = "nawal";

        String query = null;
        try {
            query = URLEncoder.encode(urll, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String url = "http://192.168.0.102/Officer/names.php?NAM=" + query;