简体   繁体   English

解析dataorg.json.JSONException:值时出错

[英]Error parsing dataorg.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject

I work in a android app which should show the details of a virtual database(WAMPSERVER i use) and make new documents. 我在一个Android应用程序中工作,该应用程序应显示虚拟数据库的详细信息(我使用WAMPSERVER)并制作新文档。 When i push the button of show details the app displays the above error.The following is the allproductsactivity.java file.I have see and other similar post but i can't understand and solve my problem. 当我按下显示详细信息按钮时,该应用程序显示上述错误。以下是allproductsactivity.java文件。我看到了其他类似的帖子,但我不明白并解决了我的问题。 I put xxxx:80 on IP address for security reasons. 出于安全原因,我将xxxx:80放在IP地址上。

AllProductsActivity.java AllProductsActivity.java

package com.panos.appphpconnect;

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.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
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;

public class AllProductsActivity extends ListActivity {




private ProgressDialog pDialog;

JSONParser jParser=new JSONParser();

ArrayList<HashMap<String, String>> productsList;

// url to get all products list
private static String url_all_products = "http://x.x.x.x:80/connect/get_all_products.php";

// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_CLASSES = "classes";
private static final String TAG_PID = "_id";
private static final String TAG_NAME = "username";

// products JSONArray
JSONArray products = null;

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

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

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

    // Get listview
    ListView lv = getListView();

    // on seleting single product
    // launching Edit Product Screen
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // getting values from selected ListItem
            String _id = ((ListView) view.findViewById(R.id.id)).getAdapter().toString();

            // Starting new intent
            Intent in = new Intent(getApplicationContext(),EditProductActivity.class);
            // sending pid to next activity
            in.putExtra(TAG_PID, _id);

            // starting new activity and expecting some response back
            startActivityForResult(in, 100);
        }
    });

}

// 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);
    }

}

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    if(pDialog!=null && pDialog.isShowing()){
        pDialog.cancel();
    }
}



/**
 * 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(AllProductsActivity.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 response
        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_CLASSES);

                // 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 name = c.getString(TAG_NAME);

                    // 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(TAG_NAME, name);

                    // adding HashList to ArrayList
                    productsList.add(map);
                }
            } else {
                // no products found
                // Launch Add New product Activity
                Intent i = new Intent(getApplicationContext(),NewProductActivity.class);
                // Closing all previous activities
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);
            }
        } 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(
                        AllProductsActivity.this, productsList,
                        R.layout.list_item, new String[] { TAG_PID,
                                TAG_NAME},
                        new int[] { R.id.id, R.id.name });
                // updating listview
                setListAdapter(adapter);
            }
        });

    }

}
}

The code of get_all_products.php is the following get_all_products.php的代码如下

<?php

/*
* Following code will list all the products
*/

// array for json response
$response = array();


// include db connect class
require("db_connect.php");

// connecting to db
$db = new DB_CONNECT();

// get all products from classes table
$result = mysql_query("SELECT *FROM classes") or die(mysql_error());



// check for empty result
if (mysql_num_rows($result)>0) {
// looping through all results
// products node
$response["classes"] = array();

while ($row = mysql_fetch_array($result)) {
    // temp user array
    $classes = array();
    $classes["_id"] = $row["_id"];
    $classes["username"] = $row["username"];
    $classes["password"] = $row["password"];


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

// echoing panos response
echo json_encode($response);
} else {
// no products found
$response["success"] = 0;
$response["message"] = "No submissions found";

// echo no users json
echo json_encode($response);
}
?>

Also when i run the file get_all_products.php on my browser displays me the error " Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in C:\\wamp\\www\\connect\\db_connect.php on line 6" but i don't understand which is line 6 and what is the error.The code of db_connect.php file is the below. 另外,当我在浏览器上运行文件get_all_products.php时,向我显示错误“语法分析错误:语法错误,意外的T_STRING,期望C:\\ wamp \\ www \\ connect \\ db_connect.php在第6行出现T_FUNCTION”,但我没有了解哪个是第6行以及什么是错误。db_connect.php文件的代码如下。

 <?php
 //A class file to connect to database

 class DB_CONNECT{

  function_constructor(){

   $db = new DB_CONNECT();

  //connecting to database

  $this->connect();
  }

  function_destruct(){
  //closing db connection
  $this->close();
  }

  //Function to connect with database
  function connect(){
           //import database connection variables
           require_once_DIR_ . '/db_config.php';
           //connecting to mysql db
  $con=mysql_connect(DB_SERVER,DB_USER,DB_PASSWORD) or die(mysql_error());
  //selecting database
  $db=mysql_select_db(DB_DATABASE) or die(mysql_error());
  //returning connrction cursor
  return $con;
  }
  //function close to db connection
  function close(){
           //closing db connection
           mysql_close();
           }
           }
           ?>

That's all errors of logocat 这就是徽标的所有错误

  E/JSON Parser(2234): Error parsing dataorg.json.JSONException: Value <!DOCTYPE of type     java.lang.String cannot be converted to JSONObject
  W/dalvikvm(2234): threadid=10: thread exiting with uncaught exception (group=0xb4e1e908)
  E/AndroidRuntime(2234): FATAL EXCEPTION: AsyncTask #1
  E/AndroidRuntime(2234): java.lang.RuntimeException: An error occured while executing doInBackground()
  E/AndroidRuntime(2234):   at android.os.AsyncTask$3.done(AsyncTask.java:299)
  E/AndroidRuntime(2234):   at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
  E/AndroidRuntime(2234):   at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
  E/AndroidRuntime(2234):   at java.util.concurrent.FutureTask.run(FutureTask.java:239)
  E/AndroidRuntime(2234):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
  E/AndroidRuntime(2234):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
  E/AndroidRuntime(2234):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
  E/AndroidRuntime(2234):   at java.lang.Thread.run(Thread.java:856)
  E/AndroidRuntime(2234): Caused by: java.lang.NullPointerException
  E/AndroidRuntime(2234):   at com.panos.appphpconnect.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:141)
  E/AndroidRuntime(2234):   at com.panos.appphpconnect.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:1)
  E/AndroidRuntime(2234):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
  E/AndroidRuntime(2234):   at java.util.concurrent.FutureTask.run(FutureTask.java:234)
  E/AndroidRuntime(2234):   ... 4 more

SELECT *FROM classes is invalid syntax and when you query you should pass the connection to mysql_query SELECT *FROM classes是无效的语法,当您查询时,应将连接传递给mysql_query

$result = mysql_query("SELECT * FROM classes", $db) or die(mysql_error());

And forget about android now, get this to work in your browser then you can worry about parsing it in your app. 现在就忘了android,在浏览器中运行它,然后您就可以担心在应用中对其进行解析了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 解析 dataorg.json.JSONException 时出错:值 - Error parsing dataorg.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject 解析数据org.json.JSONException的另一个错误:值 - Another Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 从Pincode到State Error,解析数据org.json.JSONException:值 - From Pincode to State Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject android错误org.json.JSONException:值 - android error org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 解析数据org.json.JSONException时出错:值 - Error parsing data org.json.JSONException: Value <!— of type java.lang.String cannot be converted to JSONObject 如何解决org.json.JSONException:Value - How to solve the org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 随机获取org.json.JSONException错误:值 - Getting randomly error of org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 解析数据org.json.JSONException时出错:类型java.lang.String无法转换为JSONObject - Error parsing data org.json.JSONException: type java.lang.String cannot be converted to JSONObject get JSONException:解析JSON响应时,无法将java.lang.String类型的值转换为JSONObject - get JSONException: Value of type java.lang.String cannot be converted to JSONObject when parsing a JSON response 解析数据时出错:JSONException:值 - Error parsing data : JSONException: Value <br of type java.lang.String cannot be converted to JSONObject
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM