我知道这个问题很常见,但所提出的所有解决方案似乎都不适合我的情况。我试图从PHP Web服务检索JSON响应,但我一直收到此错误
Error parsing data org.json.JSONException: Value <br of type java.lang.String
W/System.err: org.json.JSONException: No value for success
以下是我认为与错误相关的Android代码
// getting JSON response from PHP web service
JSONObject returnedJSONObj = listsJSONParser.makeHttpRequest(Constant.URL
+ "RetrieveListSVC.php", "GET", params);
Log.d("Returned JSON ", String.valueOf(returnedJSONObj));
success = returnedJSONObj.getInt(Constant.TAG_SUCCESS);
Log.d("JSON Success Value", String.valueOf(success));
if (success == 1){
// do stuff}
在日志Returned JSON
处,我在LogCat中收到的输出是
D/Returned JSON: {"androidid":"1"}
但是日志JSON Success Value
没有输出。而如第一个块所示,没有成功的价值。 PHP已经给了我,我没有编写它,因为我几乎没有任何PHP知识,所以服务可能是有问题的。以下是可能相关的代码
<?php
define('IEM_PATH', '../admin/com');
require_once('../admin/includes/config.php');
require_once('../admin/com/lib/IEM.class.php');
require_once ('../admin/com/lib/IEM/DBFACTORY.class.php');
require_once ('../admin/com/lib/IEM/baseAPI.class.php');
require_once ('../admin/com/lib/API/USERS.class.php');
require_once ('../admin/com/lib/IEM/baseRecord.class.php');
require_once ('../admin/com/lib/record/Users.class.php');
function GetLists($userid = 0, $getUnconfirmedCount = false) {
$userid = $_REQUEST['userID'];
if (!$userid) {
trigger_error('This user object is not loaded with any user.... You will need to supply the userid as a parameter.', E_USER_NOTICE);
return false;
}
if (!$userid) {
$userid = $this->userid;
}
// If user is a "System Admin" or a "List Admin", allow to access all lists
/* if ($userid == $this->userid) {
if ($this->ListAdmin() || $this->listadmintype == 'a') {
$userid = 0;
}
}
*/
require_once('../admin/functions/api/lists.php');
$listapi = new Lists_API();
$returnA = $listapi->GetListByUserID($userid, $getUnconfirmedCount);
$returnResult1 = array();
foreach ($returnA as $key => $value) {
//$lists[] = $key;
$returnResult["contactList"][] = array("listID" => $returnA[$key]['listid'], "name" => $returnA[$key]['name']);
}
$returnResult["success"] = 1;
echo json_encode($returnResult) ;
}
//}
GetLists();
我的问题的目的是我想知道问题是Java还是PHP代码?我是正确处理JSON响应还是应该以其他方式处理。
答案 0 :(得分:0)
JSON响应中存在错误
没有关键&#34;成功&#34;在JSON对象中。
正如我所看到的,{"androidid":"1"}
中只有androidid作为键。
答案 1 :(得分:0)
Constant.TAG_SUCCESS =&#34; androidid&#34 ;;
您获得字符串而不是整数。 错误在以下声明中
success = returnedJSONObj.getInt(Constant.TAG_SUCCESS);
应该是
success = returnedJSONObj.getString(Constant.TAG_SUCCESS);
答案 2 :(得分:0)
您分配给Constant.TAG_SUCCESS
的值错误,提到success
。
所以将
Constant.TAG_SUCCESS
的值更改为'androididor make another variable as
androidIDand assign it a value as
androidid` 这将为您提供所需的输出。
并更改
success = returnedJSONObj.getInt(Constant.TAG_SUCCESS);
到
success = returnedJSONObj.getString(yourNewVariable); //new variable having value which is your json attribute