2016-01-19 3 views
-1

Я знаю, что этот вопрос очень распространен, но все представленные решения не соответствуют моей ситуации. Я пытаюсь получить ответ JSON из PHP веб-сервиса, но я получаю эту ошибкуНевозможно разобрать ответ JSON на Android

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"} 

Но нет никакого вывода для журнала . И, как показано в первом фрагменте, нет никакой ценности для успеха. 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

Что такое 'значение Constant.TAG_SUCCESS', которое вы назначили? – Pankaj

+1

Я думаю, проблема с php. – justDroid

+0

ваш возвращенный json не содержит никакого ключа успеха, то как у вас будет ценность для этого –

ответ

0

Существует ошибка в формате JSON ответ

Там нет ключа «успех» в JSON объект.

Как я вижу, есть только androidid как ключ в {"androidid":"1"}.

0

Constant.TAG_SUCCESS = "androidid";

Вы получаете string не integer. Ошибка в ниже заявлении

success = returnedJSONObj.getInt(Constant.TAG_SUCCESS); 

должно быть

success = returnedJSONObj.getString(Constant.TAG_SUCCESS); 
0

Значение, которое вы назначили на Constant.TAG_SUCCESS неправильно, которые упоминаются как success.

Таким образом изменить значение Constant.TAG_SUCCESS к «androidid or make another variable as androidID and 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 
Смежные вопросы