3 回答
TA贡献1834条经验 获得超8个赞
您已经完成了所有代码,并且在发送响应之前设置了 json=["error"];
[不要忘记接受答案并在答案正确的情况下点赞或阐明(更多解释)您的问题,以便回答者可以给出更相关的答案]
<?php
require("db/Db.class.php");
if(isset($_POST['key']) && isset($_POST['username']) && isset($_POST['getMainCategory'])){
//your code
//remove below two lines from every if as it can be called commonly at last;
//header('Content-Type: application/json');
//echo json_encode($json);
}else if(isset($_POST['key']) && isset($_POST['username']) && isset($_POST['getSlideShow'])){
//your code
}else if(isset($_POST['key']) && isset($_POST['username']) && isset($_POST['getAllNews'])){
//your code
}else{
$json = ["error"];
}
header('Content-Type: application/json');
echo json_encode($json);
?>
TA贡献1966条经验 获得超4个赞
我解决了这个问题,实际上这很荒谬。在第一个 params.put 中,“用户名”旁边有一个小空间,这导致了这个问题,没有获取数据,也导致了异常。即使我仔细检查了,但没有不知道我是怎么错过的……感谢所有花时间帮助我的人。我很感激。
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
//the line below was causing the exception. right side of "username " (space)
params.put("username ",user);
params.put("key",api);
params.put("getMainCategory",no);
return params;
}
TA贡献1831条经验 获得超10个赞
由于您期待 JSONArray,因此不要选择 StringRequest,而是使用 volley 中可用的 JsonArrayRequest。请参阅此文档: https: //developer.android.com/training/volley/request
您的错误日志也表明
java.lang.String 无法转换为 JSONObject
因此我建议你试试这个:
JsonArrayRequest req = new JsonArrayRequest(Request.Method.POST, URL_PRODUCTS,
new Response.Listener<String>() {
@Override
public void onResponse(JSONArray response) {
//.............
因为你期待一个 json 数组。
添加回答
举报