2012-09-20 3 views
0

데이터베이스에서 제공하는 데이터를 PHP 및 JSON을 통해 표시하기 위해 AsyncTask를 사용하므로 응용 프로그램을 모두 실행할 때 오류가 발생합니다. :동일한 "오류 파싱 데이터 org.json.JSONException"버그가 계속 발생 함

09-20 15:31:51.330: E/Buffer Error(4484): Error converting result java.lang.NullPointerException 
09-20 15:31:51.330: E/JSON Parser(4484): Error parsing data org.json.JSONException: End of input at character 0 of 

이 내 자바 클래스입니다 :

package com.androidhive.dashboard; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.os.Bundle; 
import androidhive.dashboard.R; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

public class PlacesActivity extends ListActivity { 

    // Progress Dialog 
    private ProgressDialog pDialog; 

    // Creating JSON Parser object 
    JSONParser jParser = new JSONParser(); 

    ArrayList<HashMap<String, String>> productsList; 

    // url to get all products list 
    private static String url_all_products = "http://192.168.1.74/test/focus.php"; 

    // JSON Node names 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_PRODUCTS = "products"; 
    private static final String TAG_PID = "pid"; 
    private static final String LIB_ART = "LibArt"; 
    private static final String COD_ART = "CodArt"; 

    // products JSONArray 
    JSONArray products = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.places_layout); 

     // Hashmap for ListView 
     productsList = new ArrayList<HashMap<String, String>>(); 

     // Loading products in Background Thread 
     new LoadAllProducts().execute(); 

     // Get listview 
     ListView lv = getListView(); 




    }//onCreate finish 

// Response from Edit Product Activity 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     // if result code 100 
     if (resultCode == 100) { 
      // if result code 100 is received 
      // means user edited/deleted product 
      // reload this screen again 
      Intent intent = getIntent(); 
      finish(); 
      startActivity(intent); 
     } 
    } 

     /** 
     * Background Async Task to Load all product by making HTTP Request 
     * */ 
     class LoadAllProducts extends AsyncTask<String, String, String> { 

      /** 
      * Before starting background thread Show Progress Dialog 
      * */ 
      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       pDialog = new ProgressDialog(PlacesActivity.this); 
       pDialog.setMessage("Loading products. Please wait..."); 
       pDialog.setIndeterminate(false); 
       pDialog.setCancelable(false); 
       pDialog.show(); 
      } 

      /** 
      * getting All products from url 
      * */ 
      protected String doInBackground(String... args) { 
       // Building Parameters 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       // getting JSON string from URL 
       JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params); 

       // Check your log cat for JSON reponse 
       Log.d("All Products: ", json.toString()); 

       try { 
        // Checking for SUCCESS TAG 
        int success = json.getInt(TAG_SUCCESS); 

        if (success == 1) { 
         // products found 
         // Getting Array of Products 
         products = json.getJSONArray(TAG_PRODUCTS); 

         // looping through All Products 
         for (int i = 0; i < products.length(); i++) { 
          JSONObject c = products.getJSONObject(i); 

          // Storing each json item in variable 
          String id = c.getString(TAG_PID); 
          String LibArt = c.getString(LIB_ART); 
          String CodArt = c.getString(COD_ART); 

          // creating new HashMap 
          HashMap<String, String> map = new HashMap<String, String>(); 

          // adding each child node to HashMap key => value 
          map.put(TAG_PID, id); 
          map.put(LIB_ART, LibArt); 
          map.put(COD_ART,CodArt); 

          // adding HashList to ArrayList 
          productsList.add(map); 
         } 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

       return null; 
      } 

      /** 
      * After completing background task Dismiss the progress dialog 
      * **/ 
      protected void onPostExecute(String file_url) { 
       // dismiss the dialog after getting all products 
       pDialog.dismiss(); 
       // updating UI from Background Thread 
       runOnUiThread(new Runnable() { 
        public void run() { 
         /** 
         * Updating parsed JSON data into ListView 
         * */ 
         ListAdapter adapter = new SimpleAdapter(
           PlacesActivity.this, productsList, 
           R.layout.list_item, new String[] { COD_ART,TAG_PID, 
             LIB_ART}, 
           new int[] { R.id.codart ,R.id.pid, R.id.libart }); 
         // updating listview 
         setListAdapter(adapter); 
        } 
       }); 

      } 

     } 





} 

그리고 여기에는 PHP 파일입니다

<?php 
require 'FastJSON.class.php'; 

$db = mssql_connect ('HPWALID', '', ''); 
$ret = mssql_select_db ('Focus', $db) or die ('Echec lors de la connexion: '.mysql_error()); 
$result = mssql_query("SELECT * FROM TabStock"); 
if (mssql_num_rows($result) > 0) { 
    // looping through all results 
    // products node 
    $response["products"] = array(); 

    while ($row = mssql_fetch_array($result)) { 
     // temp user array 
     $product = array(); 
     $product["CodArt"] = $row["CodArt"]; 
     $product["LibArt"] = $row["LibArt"]; 
     $product["pid"] = $row["pid"];  



     // push single product into final response array 
     array_push($response["products"], $product); 
    } 
    // success 
    $response["success"] = 1; 

    // echoing JSON response 
    $var = FastJSON::encode($response); 
    echo $var; 
} else { 
    // no products found 
    $response["success"] = 0; 
    $response["message"] = "No products found"; 

    // echo no users JSON 
    // echo json_encode($response); 
    $var = FastJSON::encode($response); 
    echo $var; 
} 


?> 

답변

0

emualtor를 사용하는 경우 IP 주소 (192.168.1.74)를 (10.0.2.2)로 변경하십시오.

관련 문제