2015-11-06 06:33
浏览 92


I'm new developer of android I don't have a lot of experience with Java or Android. I'm looking for a way to send POST data to a PHP script and display the result. here is i made the android program for sending the data on online mysql server but when i insert the data it will insert Null value here is my android java code

 package com.example.myapp.myapplication;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.TextView;
import android.view.Menu;
import android.widget.Toast;

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.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity implements LocationListener{
    LocationManager lm;
    TextView lt, ln;
    String provider;
    Location l;
    protected void onCreate(Bundle savedInstanceState) {
        //get location service
        Criteria c=new Criteria();
        //criteria object will select best service based on
        //Accuracy, power consumption, response, bearing and monetary cost
        //set false to use best service otherwise it will select the default Sim network
        //and give the location based on sim network
        //now it will first check satellite than Internet than Sim network location
        provider=lm.getBestProvider(c, false);
        //now you have best provider
        //get location
            //get latitude and longitude of the location
            double lng=l.getLongitude();
            double lat=l.getLatitude();
            //display on text view
            ln.setText("No Provider");
            lt.setText("No Provider");
    //If you want location on changing place also than use below method
    //otherwise remove all below methods and don't implement location listener
    public void onLocationChanged(Location arg0)
        double lng=l.getLongitude();
        double lat=l.getLatitude();

    public void onStatusChanged(String provider, int status, Bundle extras) {


    public void insert(View view){
        String lati = lt.getText().toString();
        String longi = ln.getText().toString();

    private void insertToDatabase(final String lt, final String ln) {
        class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
            protected String doInBackground(String... params) {
                String paramlt = params[0];
                String paramln = params[1];

                List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>(2);
                nameValuePairs.add(new BasicNameValuePair("latitude", paramlt));
                nameValuePairs.add(new BasicNameValuePair("Longitude", paramln));

                try {
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpPost httpPost = new HttpPost(
                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                    HttpResponse response = httpClient.execute(httpPost);

                    HttpEntity entity = response.getEntity();

                } catch (ClientProtocolException e) {

                } catch (IOException e) {

                return "success";

            protected void onPostExecute(String result) {

                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
                TextView textViewResult = (TextView) findViewById(R.id.textViewResult);

        SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
        String[] str = new String[2];
        str[0] = lt;
        str[1] = ln ;

    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;
    public void onProviderDisabled(String arg0) {
        // TODO Auto-generated method stub
    public void onProviderEnabled(String arg0) {
        // TODO Auto-generated method stub


and also here is my PHP script


$con = mysql_connect($host,$uname,$pwd) or die("connection failed");
mysql_select_db($db,$con) or die("db selection failed");

$Latitude = $_POST['lt'];
   $Longitude = $_POST['ln'];


if($r=mysql_query("insert into sample (latitude,Longitude) values ('$Latitude','$Longitude')",$con))



  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • doutong6814 2015-11-06 06:39


    nameValuePairs.add(new BasicNameValuePair("latitude", paramlt)); nameValuePairs.add(new BasicNameValuePair("Longitude", paramln));

    to this

    nameValuePairs.add(new BasicNameValuePair("lt", paramlt)); nameValuePairs.add(new BasicNameValuePair("ln", paramln));

    打赏 评论
  • dpn4073 2015-11-06 06:36

    you are passing 'latitude' from android and from php you are getting it as $_POST['lt']

    How will it work, both key should be same

    打赏 评论
  • duan032225 2015-11-06 06:39

    Write below code:

    nameValuePairs.add(new BasicNameValuePair("latitude", paramlt));
    nameValuePairs.add(new BasicNameValuePair("Longitude", paramln));   
    $Latitude = $_POST['latitude'];
    $Longitude = $_POST['Longitude'];
    打赏 评论

相关推荐 更多相似问题