0

当我尝试将我的应用程序连接到 MySQL 数据库时,应用程序突然停止。我认为问题出在我编写的 jasonparser 类上。我需要接受提交的文件而不发布任何内容。我应该如何改变我的课程..我的 JasonParsor 如下所示

package com.mahavega.qcdemo;

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 method
    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;

    }
}

我要显示数据的活动是

package com.mahavega.qcdemo;


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

import com.mahavega.qcdemo.R;

import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;

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


public class MainActivity extends Activity implements OnClickListener {
    JSONParser jsonParser = new JSONParser();
    private static final String url_product_detials = "http://neogdgt.com/mob/get_det.php";
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_EVENT = "event";
    private static final String TAG_EVENTITLE = "event_title";
    private static final String TAG_EVENTDET = "event_details";

     private GestureDetector gestureDetector;
        View.OnTouchListener gestureListener;

//      Condetect cd = new Condetect(getApplicationContext());
    //    Boolean isInternetPresent = cd.isConnectingToInternet(); 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gestureDetector = new GestureDetector(this, new MyGestureDetector());
        gestureListener = new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        };
        new GetEventDetails().execute();
        ImageView ad = (ImageView) findViewById(R.id.imageView1);
        ImageView im2 = (ImageView) findViewById(R.id.imageView2);
        ImageView im3 = (ImageView) findViewById(R.id.imageView3);
        ImageView im4 = (ImageView) findViewById(R.id.imageView4);
        ImageView im5 = (ImageView) findViewById(R.id.imageView5);
        ad.setOnClickListener(MainActivity.this);
        im2.setOnTouchListener(gestureListener);
        im2.setOnClickListener(MainActivity.this); 
        im3.setOnTouchListener(gestureListener);
        im3.setOnClickListener(MainActivity.this); 
        im4.setOnTouchListener(gestureListener);
        im4.setOnClickListener(MainActivity.this); 
        im5.setOnTouchListener(gestureListener);
        im5.setOnClickListener(MainActivity.this); 
        ad.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                    boolean inet = isOnline();
                    if (inet)
                    {
                        startActivity(new Intent(MainActivity.this, Adds.class));
                        overridePendingTransition(R.anim.slide_left, R.anim.slide_right);
                        finish();
                    }
                    else {
                        displayAlert();
                    }


            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling (MotionEvent e1, MotionEvent e2, float velocityX,    float velocityY)
        {
            float sensitvity = 50;
            if((e1.getX() - e2.getX()) < sensitvity){
                startActivity(new Intent(MainActivity.this, Login.class));
                overridePendingTransition(R.anim.slide_right, R.anim.slide_left);
                finish();
            }
            else if((e2.getX() - e1.getX()) > sensitvity){
                startActivity(new Intent(MainActivity.this, Login.class));
                overridePendingTransition(R.anim.slide_right, R.anim.slide_left);
                finish();           }

            return super.onFling(e1, e2, velocityX, velocityY);
        }

    }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub


    }
    @Override
    public void onBackPressed() {
        finish();
        super.onBackPressed();
        }
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event)  { 
        if ( keyCode == KeyEvent.KEYCODE_BACK 
                && event.getRepeatCount() == 0) { 
            onBackPressed(); 
        } 

        return true; 
    } 
    public boolean isOnline() {
        ConnectivityManager cm =
            (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }
    public void displayAlert()
     {
     new AlertDialog.Builder(this).setMessage("Please Check Your Internet Connection and Try Again") 
     .setTitle("Network Error") 
     .setCancelable(true) 
     .setNeutralButton(android.R.string.ok, 
     new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton){
     } 
     }) 
     .show(); 
     }
    class GetEventDetails extends AsyncTask<String, String, String> {


        /**
         * Getting product details in background thread
         * */
        protected String doInBackground(String... params) {

            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {
                    // Check for success tag
                    int success;
                    try {
                        // Building Parameters
                        String pid="1";
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("pid", pid));

                        // getting product details by making HTTP request
                        // Note that product details url will use GET request
                        JSONObject json = jsonParser.makeHttpRequest(
                                url_product_detials, "GET", params);

                        // check your log for json response
                        Log.d("Single Product Details", json.toString());

                        // json success tag
                        success = json.getInt(TAG_SUCCESS);
                        if (success == 1) {
                            // successfully received product details
                            JSONArray eventObj = json
                                    .getJSONArray(TAG_EVENT); // JSON Array

                            // get first product object from JSON Array
                            JSONObject event = eventObj.getJSONObject(0);

                            // product with this pid found
                            TextView txtEventname=(TextView) findViewById(R.id.textView2);
                            TextView txtEventdet=(TextView) findViewById(R.id.textView3);
                            // Edit Text
                            txtEventname.setText(event.getString(TAG_EVENTITLE));
                            txtEventdet.setText(event.getString(TAG_EVENTDET));
                        }else{
                            // product with pid not found
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });

            return null;
        }


}
}

我的 getdetails.php 类是

<?php
// array for JSON response
$response = array();

// include db connect class
require_once __DIR__ . '/db_connect.php';

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

// check for post data

    // get a product from products table
    $result = mysql_query("SELECT *FROM tb_event_details WHERE event_id=1");

    if (!empty($result)) {
        // check for empty result
        if (mysql_num_rows($result) > 0) {

            $result = mysql_fetch_array($result);

            $events = array();
            $events["event_id"] = $result["event_id"];
            $events["event_title"] = $result["event_title"];
            $events["event_details"] = $result["event_details"];
            // success
            $response["success"] = 1;

            // user node
            $response["events"] = array();

            array_push($response["events"], $events);

            // echoing JSON response
            echo json_encode($response);
        } else {
            // no product found
            $response["success"] = 0;
            $response["message"] = "No event found";

            // echo no users JSON
            echo json_encode($response);
        }
    } else {
        // no product found
        $response["success"] = 0;
        $response["message"] = "No event found";

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

1 回答 1

0

只需添加

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
          .detectDiskReads().detectDiskWrites().detectNetwork() 
于 2013-05-04T04:25:25.457 回答