2013-11-30 3 views
1

Приложение для Android, которое получает идентификатор, имя и адрес электронной почты с идентификатора файла PHP, имя, адрес электронной почты, отправленный как ответ JSON на Android-приложение, проблема в том, что когда я нажимаю на получение данных, никакие данные не получаются, и я получаю исключение в LogCat вот мой код, PHP файлов и трассировки стека MainActivityJSON Exception не возвращается

package com.example.colcheck; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import com.example.colcheck.Library.*; 

public class MainActivity extends Activity { 
    TextView uid; 
    TextView name1; 
    TextView email1; 
    Button Btngetdata; 

    //URL to get JSON Array 
    private static String url = "http://localhost/new/check2.php"; 

    //JSON Node Names 
    private static final String TAG_USER = "user"; 
    private static final String TAG_ID = "id"; 
    private static final String TAG_NAME = "name"; 
    private static final String TAG_EMAIL = "email"; 

    JSONArray user = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
     Btngetdata = (Button)findViewById(R.id.getdata); 
     Btngetdata.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       new JSONParse().execute(); 

      } 
     }); 

    } 

    private class JSONParse extends AsyncTask<String, String, JSONObject> { 
     private ProgressDialog pDialog; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      uid = (TextView)findViewById(R.id.uid); 
      name1 = (TextView)findViewById(R.id.name); 
      email1 = (TextView)findViewById(R.id.email); 
      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("Getting Data ..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 

     } 

     @Override 
     protected JSONObject doInBackground(String... args) { 
      JSONParser jParser = new JSONParser(); 

      // Getting JSON from URL 
      JSONObject json = jParser.getJSONFromUrl(url); 
      return json; 
     } 
     @Override 
     protected void onPostExecute(JSONObject json) { 
      pDialog.dismiss(); 
      try { 

       System.out.println("JSON Response : "+json.toString().trim()); 

       String id=""; 
       String name=""; 
       String email=""; 
       if(json.has("id")) 
        id = json.getString("id"); 

       if(json.has("name")) 
         name = json.getString("name"); 

       if(json.has("TAG_EMAIL")) 
         email = json.getString("TAG_EMAIL"); 

           //Set JSON Data in TextView 
           uid.setText(id); 
           name1.setText(name); 
           email1.setText(email); 

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

     } 
    } 

} 

PHP файл с ответом JSon

<?php 

    $con=mysqli_connect("localhost","root","123","pet_home"); 
    if (mysqli_connect_errno()) 
     { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 

    $result = mysqli_query($con,"SELECT * FROM users WHERE username='test' AND password='123'"); 
    $row_cnt = mysqli_num_rows($result); 

    if($row_cnt>0){  
     $row = mysqli_fetch_array($result); 
     $data = array('success'=>true, 'user'=>array("TAG_ID" => $row['id'], "TAG_NAME"=> $row['name'], "TAG_EMAIL" =>$row['email'])); 
    }else{ 
     $data = array('success'=>false); 
    } 

header('Content-Type: application/json'); 
    echo json_encode($data); 



    mysqli_close($con); 


    ?> 

После не делать этого никакого ответа возвращается в приложение для Android Вот StackTrace кажется s как есть исключение

11-30 17:06:13.679: I/System.out(3474): JSON Response : {"TAG_USER":{"id":"OFF","TAG_EMAIL":"OFF","name":"OFF"},"success":true} 
+0

нет имени тега 'user' так только то, что ошибка. – Hariharan

+0

не понял, что вы имеете в виду, пожалуйста, объясните больше спасибо – user1928775

+0

вы можете напечатать 'json' в журнале cat. – Hariharan

ответ

1

Попробуйте это ..

если ваш json подобен этому

{"id":"OFF","TAG_EMAIL":"OFF","name":"OFF"} 

затем

вы можете проверить, является ли это имя тега присутствует или нет

System.out.println("JSON Response : "+json.toString().trim()); 

if(json.has("id")) 
    String id = json.getString("id"); 

if(json.has("name")) 
    String name = json.getString("name"); 

if(json.has("TAG_EMAIL")) 
    String email = json.getString("TAG_EMAIL"); 

EDIT:

ваш синтаксический, как показано ниже

user = json.getJSONArray(TAG_USER); 

нет JSONArray только JSONObject, так что вы не можете разобрать JSONObject, как JSONArray то нет user, как JSONArray

EDIT 1:

try { 

System.out.println("JSON Response : "+json.toString().trim()); 

if(json.has("id")) 
    String id = json.getString("id"); 

if(json.has("name")) 
    String name = json.getString("name"); 

if(json.has("TAG_EMAIL")) 
    String email = json.getString("TAG_EMAIL"); 

       //Set JSON Data in TextView 
       uid.setText(id); 
       name1.setText(name); 
       email1.setText(email); 

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

EDIT 2:

try { 

System.out.println("JSON Response : "+json.toString().trim()); 

JSONObject c = json.getJSONObject("TAG_USER"); 

if(c.has("id")) 
    String id = c.getString("id"); 

if(c.has("name")) 
    String name = c.getString("name"); 

if(c.has("TAG_EMAIL")) 
    String email = c.getString("TAG_EMAIL"); 

       //Set JSON Data in TextView 
       uid.setText(id); 
       name1.setText(name); 
       email1.setText(email); 

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

i обновлено мое сообщение с исключением без значения для пользователя я отредактировал идентификатор, имя и адрес электронной почты, но я не получил, что редактировать в пользователе, так что он исправляет проблему – user1928775

+0

@ user1928775 вы можете печатать 'json' ответ в log cat – Hariharan

+0

все сообщения обновлены с logcat и код, который вы предложили – user1928775

Смежные вопросы