java - 通过 Json 从 php 页面读取信息时 Android 应用程序崩溃

标签 java php android mysql json

我正在 android 中编写一个应用程序,以使用 mysql 和 JSON 从 php 页面读取信息。我还在我的应用程序中使用 JSONParser 类来读取,但它不起作用并且我的应用程序崩溃了。我不知道出了什么问题。这是我的代码:

package com.toloee.iman.haminjuri;
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.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
    private ListView mListView;
    private ProgressDialog pDialog;
    JSONParser jParser = new JSONParser();
    ArrayList<HashMap<String, String>> productsList;
    private static String url_all_products = "http://imankm.esy.es/get_all_products.php";
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_PRODUCTS = "products";
    private static final String TAG_PID = "id";
    private static final String TAG_NAME = "name";
    JSONArray products = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Hashmap for ListView
        productsList = new ArrayList<HashMap<String, String>>();
        // Loading products in Background Thread
       new LoadAllProducts().execute();
    }

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

    }

    class LoadAllProducts extends AsyncTask<String, String, String> {
        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.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 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(),
                            MainActivity.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
                     * */
                    mListView = (ListView) findViewById(R.id.listView1);
                    ListAdapter  adapter = new SimpleAdapter(MainActivity.this, productsList, R.layout.pat,
                            new String[] { "name" },new int[]{R.id.textView1});
                    mListView.setAdapter(adapter);
                }
            });
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}  

我的 JSONParser 类是:

package com.toloee.iman.haminjuri;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;

public class JSONParser {
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
    // constructor
    public JSONParser() {
    }
    // function get json from url
    // by making HTTP POST or GET mehtod
    public JSONObject makeHttpRequest(String url, String method,
                                      List<NameValuePair> params) {

        // Making HTTP request
        try {
            // check for request method
            if(method == "POST"){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

            }else if(method == "GET"){
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);

                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }
        // return JSON String
        return jObj;
    }
}

我的 xml 文件是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="50dp">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_gravity="center_horizontal">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Large Text"
            android:id="@+id/textView1" />
    </LinearLayout>
</LinearLayout>

和 logcat 消息是:

    08-29 19:54:32.600    2670-2700/com.toloee.iman.haminjuri W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xb4b636a0, error=EGL_SUCCESS
08-29 19:54:33.534    2670-2700/com.toloee.iman.haminjuri W/EGL_emulation﹕ eglSurfaceAttrib not implemented
08-29 19:54:33.534    2670-2700/com.toloee.iman.haminjuri W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xb4b636c0, error=EGL_SUCCESS
08-29 19:54:34.331    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 273 frames!  The application may be doing too much work on its main thread.
08-29 19:54:36.834    2670-2683/com.toloee.iman.haminjuri I/art﹕ WaitForGcToComplete blocked for 3.877s for cause Background
08-29 19:54:43.915    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 574 frames!  The application may be doing too much work on its main thread.
08-29 19:54:44.455    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 31 frames!  The application may be doing too much work on its main thread.
08-29 19:54:46.713    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 99 frames!  The application may be doing too much work on its main thread.
08-29 19:55:12.091    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 3.364s
08-29 19:55:12.222    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 219 frames!  The application may be doing too much work on its main thread.
08-29 19:55:12.261    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 5.925ms
08-29 19:55:12.469    2670-2683/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 287.832ms
08-29 19:55:12.887    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 59.246ms
08-29 19:55:12.939    2670-2683/com.toloee.iman.haminjuri I/art﹕ Background partial concurrent mark sweep GC freed 2501(179KB) AllocSpace objects, 0(0B) LOS objects, 50% free, 1010KB/2034KB, paused 348.793ms total 1.675s
08-29 19:55:12.966    2670-2683/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 25.646ms
08-29 19:55:15.134    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 314.208ms
08-29 19:55:16.398    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 415.793ms
08-29 19:55:16.440    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 39 frames!  The application may be doing too much work on its main thread.
08-29 19:55:19.307    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 59 frames!  The application may be doing too much work on its main thread.
08-29 19:55:23.624    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 4.156s
08-29 19:55:23.660    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 245 frames!  The application may be doing too much work on its main thread.
08-29 19:55:26.533    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 748.782ms
08-29 19:55:26.620    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 48 frames!  The application may be doing too much work on its main thread.
08-29 19:55:27.334    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 38.990ms
08-29 19:55:28.346    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 53.317ms
08-29 19:55:30.468    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 669.074ms
08-29 19:55:30.491    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 50 frames!  The application may be doing too much work on its main thread.
08-29 19:55:36.329    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 3.528s
08-29 19:55:36.356    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 212 frames!  The application may be doing too much work on its main thread.
08-29 19:55:40.325    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 15.511ms
08-29 19:55:42.490    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 451.030ms
08-29 19:55:42.544    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 30 frames!  The application may be doing too much work on its main thread.
08-29 19:55:45.839    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 20.836ms
08-29 19:55:47.179    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 853.861ms
08-29 19:55:47.203    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 49 frames!  The application may be doing too much work on its main thread.
08-29 19:55:47.389    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 42.107ms
08-29 19:55:48.371    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 544.762ms
08-29 19:55:48.412    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 39 frames!  The application may be doing too much work on its main thread.
08-29 19:55:49.871    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 40.730ms
08-29 19:55:52.031    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 658.185ms
08-29 19:55:52.064    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 45 frames!  The application may be doing too much work on its main thread.
08-29 19:55:52.354    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 20.351ms
08-29 19:56:01.493    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 585.534ms
08-29 19:56:02.929    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 15.600ms
08-29 19:56:07.565    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 3.648s
08-29 19:56:07.665    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 231 frames!  The application may be doing too much work on its main thread.
08-29 19:56:10.999    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 3.321s
08-29 19:56:11.092    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 204 frames!  The application may be doing too much work on its main thread.
08-29 19:56:12.951    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 18.886ms
.
.
.
08-29 19:58:21.394    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 706.848ms
08-29 19:58:21.412    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 48 frames!  The application may be doing too much work on its main thread.
08-29 19:58:21.571    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 70.261ms
08-29 19:58:24.129    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 660.466ms
08-29 19:58:24.181    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 43 frames!  The application may be doing too much work on its main thread.
08-29 19:58:24.329    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 55.206ms
.
.
.
08-29 19:59:27.915    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 609.916ms
08-29 19:59:27.945    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 41 frames!  The application may be doing too much work on its main thread.
08-29 19:59:28.018    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 45.622ms
08-29 19:59:28.590    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 157.007ms
08-29 19:59:34.902    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 72.223ms
08-29 19:59:35.789    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 465.778ms
08-29 19:59:35.797    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 30 frames!  The application may be doing too much work on its main thread.
08-29 19:59:41.345    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 19.947ms
08-29 19:59:43.906    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 571.390ms
08-29 19:59:43.923    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 39 frames!  The application may be doing too much work on its main thread.
08-29 19:59:44.602    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 256.379ms
08-29 19:59:45.120    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 287.455ms
08-29 19:59:46.196    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 740.985ms
08-29 19:59:46.230    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 55 frames!  The application may be doing too much work on its main thread.
08-29 19:59:46.334    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 78.529ms
08-29 19:59:46.388    2670-2683/com.toloee.iman.haminjuri I/art﹕ Background sticky concurrent mark sweep GC freed 8731(384KB) AllocSpace objects, 0(0B) LOS objects, 43% free, 1149KB/2034KB, paused 4.079ms total 1.206s
08-29 19:59:46.457    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 35.072ms
08-29 19:59:46.510    2670-2683/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 34.853ms
08-29 19:59:47.132    2670-2701/com.toloee.iman.haminjuri E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    Process: com.toloee.iman.haminjuri, PID: 2670
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:304)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
            at java.util.concurrent.FutureTask.run(FutureTask.java:242)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:451)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
            at java.net.InetAddress.getAllByName(InetAddress.java:215)
            at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:142)
            at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
            at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
            at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:365)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
            at com.toloee.iman.haminjuri.JSONParser.makeHttpRequest(JSONParser.java:62)
            at com.toloee.iman.haminjuri.MainActivity$LoadAllProducts.doInBackground(MainActivity.java:167)
            at com.toloee.iman.haminjuri.MainActivity$LoadAllProducts.doInBackground(MainActivity.java:145)
            at android.os.AsyncTask$2.call(AsyncTask.java:292)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
            at libcore.io.Posix.android_getaddrinfo(Native Method)
            at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
            at java.net.InetAddress.getAllByName(InetAddress.java:215)
            at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:142)
            at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
            at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
            at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:365)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
            at com.toloee.iman.haminjuri.JSONParser.makeHttpRequest(JSONParser.java:62)
            at com.toloee.iman.haminjuri.MainActivity$LoadAllProducts.doInBackground(MainActivity.java:167)
            at com.toloee.iman.haminjuri.MainActivity$LoadAllProducts.doInBackground(MainActivity.java:145)
            at android.os.AsyncTask$2.call(AsyncTask.java:292)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
            at libcore.io.Posix.android_getaddrinfo(Native Method)
            at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
            at java.net.InetAddress.getAllByName(InetAddress.java:215)
            at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:142)
            at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
            at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
            at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:365)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
            at com.toloee.iman.haminjuri.JSONParser.makeHttpRequest(JSONParser.java:62)
            at com.toloee.iman.haminjuri.MainActivity$LoadAllProducts.doInBackground(MainActivity.java:167)
            at com.toloee.iman.haminjuri.MainActivity$LoadAllProducts.doInBackground(MainActivity.java:145)
            at android.os.AsyncTask$2.call(AsyncTask.java:292)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
08-29 19:59:48.852    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 13.437ms
08-29 19:59:57.919    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 42.291ms
08-29 19:59:58.731    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 45 frames!  The application may be doing too much work on its main thread.
08-29 20:00:00.275    2670-2670/com.toloee.iman.haminjuri I/Choreographer﹕ Skipped 91 frames!  The application may be doing too much work on its main thread.
08-29 20:00:00.391    2670-2678/com.toloee.iman.haminjuri W/art﹕ Suspending all threads took: 20.032ms

最佳答案

您没有互联网权限来发出 HTTP 请求,如下所示:

Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)

要解决此问题,请将以下行添加到 AndroidManifest.xml 中:

<uses-permission android:name="android.permission.INTERNET"/>

就在 <application> 之前标签。

关于java - 通过 Json 从 php 页面读取信息时 Android 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32288545/

相关文章:

java - 如何在两个坐标之间填充二维 boolean 数组?

android - 在 Android 上存储数据以供离线访问

php - 使用 php/mysql 在 Codeigniter 中进行 301 重定向

java - 如何在android中使用sqlite连接表

android - 在 gmail 中打开的链接不再是打开 Intent 。这是因为 gmail 已更新为嵌入式应用内浏览器吗?

java - 为什么ArrayBlockingQueue中两个线程可以获取带条件的ReentrantLock

java - 如何在 Java 中为 CheckBoxMenuItems 设置加速器快捷方式?

java - Android- 将 ARGB_8888 位图转换为 3BYTE_BGR

PHP 显示表中的交替记录

PHP - 如果下拉选择=某事