我在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);
}
?>
答案 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;