如何将JSON数据从Android发送到php url?

i want to send login infromation from my App to php url.as this my App will crash.can any one help me to slove this.

this my server login method. i want to send data to this login method..

   Method [  public method login ] {

      - Parameters [3] {
        Parameter #0 [  $user_auth ]
        Parameter #1 [  $application ]
        Parameter #2 [  $name_value_list = Array ]
      }
    }

this is my login.java in android app

public class Login extends ActionBarActivity implements View.OnClickListener {

    EditText userName, pass;
    Button login;

    private ProgressDialog pDialog;

    JSONParser jsonParser = new JSONParser();

    private static final String LOGIN_URL = "http://crm.demo.com/service/v4_1/rest.php/login";

    private static final String TAG_SUCCESS = "sucess";
    private static final String TAG_MESSAGE = "message";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        userName = (EditText) findViewById(R.id.editText_userN);
        pass = (EditText) findViewById(R.id.editText_pass);
        login = (Button) findViewById(R.id.btn_login);

        login.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Log.d("v", "Login button clicked");

        new AttemptLogin().execute();
    }

    class AttemptLogin extends AsyncTask<String, String, String>{

        @Override
        protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(Login.this);
        pDialog.setMessage("Attempting login..");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
        pDialog.dismiss();
        }

        @Override
        protected String doInBackground(String... args) {

             // Check for success tag
            int success;
            String user_auth[];
            String user_name = userName.getText().toString();
            String password = pass.getText().toString();
            String application = "wakensys";
            String name_value_list[];
            String language = "en-au";
            String notifyonsave = "true";

            try {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("user_auth[]", user_name));
                params.add(new BasicNameValuePair("user_auth[]", password));
                params.add(new BasicNameValuePair("application", application));
                params.add(new BasicNameValuePair("name_value_list[]", language));
                params.add(new BasicNameValuePair("name_value_list[]", notifyonsave));


                Log.d("request!", "starting..");
                Log.i("NameValuePair", params.toString());
                // getting product details by making HTTP request
                JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", params);
                if(json == null)
                    return null;

                // check your log for json response
                Log.d("Login attempt", json.toString());

                // json success tag
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    Log.d("Login Successful!", json.toString());
                    Intent i = new Intent(Login.this, Success.class);
                    finish();
                    startActivity(i);
                    return json.getString(TAG_MESSAGE);
                }else{
                    Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                    return json.getString(TAG_MESSAGE);

                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once product deleted
            pDialog.dismiss();
            if (file_url != null){
                Toast.makeText(Login.this, file_url, Toast.LENGTH_LONG).show();
            }
        }
    }
}

--new logcat---

11-21 10:33:34.467: D/v(4400): Login button clicked
11-21 10:33:34.496: D/request!(4400): starting..
11-21 10:33:34.496: I/NameValuePair(4400): [user_auth=dghj, user_auth=ccbj, name_value_list=EN]
11-21 10:33:36.528: E/JSON Parser(4400): Error parsing data org.json.JSONException: Value <pre> of type java.lang.String cannot be converted to JSONObject
11-21 10:33:36.531: E/AndroidRuntime(4400): FATAL EXCEPTION: AsyncTask #1
11-21 10:33:36.531: E/AndroidRuntime(4400): Process: com.wakensys.sugercrm, PID: 4400
11-21 10:33:36.531: E/AndroidRuntime(4400): java.lang.RuntimeException: An error occured while executing doInBackground()
11-21 10:33:36.531: E/AndroidRuntime(4400):     at android.os.AsyncTask$3.done(AsyncTask.java:300)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at java.lang.Thread.run(Thread.java:818)
11-21 10:33:36.531: E/AndroidRuntime(4400): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.toString()' on a null object reference
11-21 10:33:36.531: E/AndroidRuntime(4400):     at com.wakensys.sugercrm.Login$AttemptLogin.doInBackground(Login.java:116)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at com.wakensys.sugercrm.Login$AttemptLogin.doInBackground(Login.java:1)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
11-21 10:33:36.531: E/AndroidRuntime(4400):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
11-21 10:33:36.531: E/AndroidRuntime(4400):     ... 4 more

Any Help Please !!

JOSONparser.java

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }


    public JSONObject getJSONFromUrl(final String url) {

        // Making HTTP request
        try {
            // Construct the client and the HTTP request.
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            // Execute the POST request and store the response locally.
            HttpResponse httpResponse = httpClient.execute(httpPost);
            // Extract data from the response.
            HttpEntity httpEntity = httpResponse.getEntity();
            // Open an inputStream with the data content.
            is = httpEntity.getContent();

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

        try {
            // Create a BufferedReader to parse through the inputStream.
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            // Declare a string builder to help with the parsing.
            StringBuilder sb = new StringBuilder();
            // Declare a string to store the JSON object data in string form.
            String line = null;

            // Build the string until null.
            while ((line = reader.readLine()) != null) {
                sb.append(line + "
");
            }

            // Close the input stream.
            is.close();
            // Convert the string builder data to an actual string.
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // Try to 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 the JSON Object.
        return jObj;

    }


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

    }
}

You can try your code like this, works perfect for me.

public class Login extends ActionBarActivity
{
    EditText tv, tv2;
    String email;
    int a;
    String password;

    JSONParser jsonParser = new JSONParser();

    private ProgressDialog dialog;

    private static String register_user = "your link here";

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

          setContentView(R.layout.activity_login);

          tv = (EditText) findViewById(R.id.editText1);
          tv2 = (EditText) findViewById(R.id.editText2);
    }

    public void Login(View view)
    {
          email = tv.getText().toString().trim();
          password = tv2.getText().toString();

          if(TextUtils.isEmpty(email) || TextUtils.isEmpty(password))
          {
                if(TextUtils.isEmpty(email))
                {
                    tv.setError("This field cannot be empty");
                }
                if(TextUtils.isEmpty(password))
                {
                    tv2.setError("This field cannot be empty");
                }
            }
            else
            {
                //build Params
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("email", email));
                params.add(new BasicNameValuePair("password", password));

                CreateNewProduct productTask = new CreateNewProduct(params);
                productTask.execute();
            }
    }

    class CreateNewProduct extends AsyncTask<String, String, JSONObject>
    {
         List<NameValuePair> params;

         public CreateNewProduct(List<NameValuePair> params)
        {
             this.params = params;
        }

        protected void onPreExecute()
        {
            super.onPreExecute();
            dialog = new ProgressDialog(Login.this);
            dialog.setMessage("We are Logging in. Please wait . . .");
            dialog.setIndeterminate(false);
            dialog.setCancelable(false);
            dialog.show();
        }

        protected JSONObject doInBackground(String... args)
        {
             JSONObject json = jsonParser.makeHttpRequest(register_user, "POST", this.params);

             return json;
        }

        protected void onPostExecute(JSONObject result)
        {
               dialog.dismiss();
              //this assumes that the response looks like this:
              //{"success" : true }
              String message = null;
              try {
                  message = result.getString("message");
              } catch (JSONException e1) {
                  // TODO Auto-generated catch block
                  e1.printStackTrace();
              }
              boolean success = false;
              try {
                success = result.getBoolean("success");
              } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
              }
              Toast.makeText(getBaseContext(), success ? "We are good to go." : "Something went wrong!", 
              Toast.LENGTH_SHORT).show();
              Toast.makeText(getBaseContext(), message, Toast.LENGTH_LONG).show();
        }
    }
}

Now according to your success value, you can take certain actions. You can also try other combinations of JSON outputs from your php script.

Try to start activity from onPostExecute instead doInBackground and no need [] in parms keys :

Note : as per your log you missing add internet permission in AndroidManifest.xml

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

Example :

class AttemptLogin extends AsyncTask<String, String, JSONObject> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(Login.this);
        pDialog.setMessage("Attempting login..");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @Override
    protected JSONObject doInBackground(String... args) {

        String user_name = userName.getText().toString();
        String password = pass.getText().toString();
        String application = "wakensys";
        String language = "en-au";
        String notifyonsave = "true";
        JSONObject json=null;
        try {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("user_auth", user_name));
            params.add(new BasicNameValuePair("user_auth", password));
            params.add(new BasicNameValuePair("application", application));
            params.add(new BasicNameValuePair("name_value_list", language));
            params.add(new BasicNameValuePair("name_value_list", notifyonsave));

            Log.d("request!", "starting..");
            Log.i("NameValuePair", params.toString());
            // getting product details by making HTTP request
            json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", params);
            // check your log for json response
            Log.d("Login attempt", json.toString());

            // json success tag

        } catch (JSONException e) {
            e.printStackTrace();
        }
        return json;
    }
    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(JSONObject response) {
        // dismiss the dialog once product deleted
        pDialog.dismiss();
        if (response != null){
            Toast.makeText(Login.this, response.getString(TAG_MESSAGE), Toast.LENGTH_LONG).show();

            if (response.getInt(TAG_SUCCESS) == 1) {
                Log.d("Login Successful!", response.toString());
                Intent i = new Intent(Login.this, Success.class);
                startActivity(i);
                finish();
            }else{
                Log.d("Login Failure!", response.getString(TAG_MESSAGE));
            }
        }

    }
}
class AttemptLogin extends AsyncTask<String, String, JSONObject> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(Login.this);
        pDialog.setMessage("Attempting login..");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @Override
    protected JSONObject doInBackground(String... args) {

        String user_name = userName.getText().toString();
        String password = pass.getText().toString();
        String application = "wakensys";
        String language = "en-au";
        String notifyonsave = "true";

        try {
           HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(LOGIN_URL+ "UserAuthentication/");

            deviceId = pref.getDeviceID(context);
            JSONObject object = new JSONObject();
            object.put("user_auth", user_name );
            object.put("user_auth", password);
            object.put("application", application);
object.put("name_value_list", language);
            object.put("name_value_list", notifyonsave);
            String dat = object.toString();
            JSONObject object1 = new JSONObject();

            object1.put("userAuthentication", object);

            String dat1 = object1.toString();
            httppost.setEntity(new StringEntity(dat1, HTTP.US_ASCII));
            httppost.setHeader("Content-type", "application/json;" + HTTP.UTF_8);

            HttpResponse response = httpclient.execute(httppost);
            StatusLine statusLine = response.getStatusLine();

            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    content));
            String line;
            StringBuilder builder = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }

            result = builder.toString();


        } catch (JSONException e) {
            e.printStackTrace();
        }
        return json;
    }
    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(JSONObject response) {
        // dismiss the dialog once product deleted
        pDialog.dismiss();
        if (response != null){
            Toast.makeText(Login.this, response.getString(TAG_MESSAGE), Toast.LENGTH_LONG).show();

            if (response.getInt(TAG_SUCCESS) == 1) {
                Log.d("Login Successful!", response.toString());
                Intent i = new Intent(Login.this, Success.class);
                startActivity(i);
                finish();
            }else{
                Log.d("Login Failure!", response.getString(TAG_MESSAGE));
            }
        }

    }
}