使用HTTP post方法将数据从Android应用程序发送到phpMyAdmin服务器

时间:2015-01-25 16:23:50

标签: java android

我是Android应用程序开发的新手,我想通过互联网将三个参数Latitude,Longitude和Bimari(我在下面的代码中提到)发送到phpMyAdmin服务器。问题是这两个参数被错误地发送到服务器端,即Latitude = 0.0 Longitude = 0.0并且只有正确显示Bimari。任何人都可以告诉我为什么在服务器上发送的纬度和经度不正确?我已经搜索了很多并且发现了AsyncTask但是在我的情况下无法理解如何实现它。谢谢很多阅读!

MainActivity.java如下: -

public final static String EXTRA_MESSAGE = "com.example.sushma.myfirstapp.MESSAGE";


String nn, nn1, nn2, nn3, nn4, nn5, nnf;
String sss1, sss2;
String s;

double lat, lng;
LocationManager lm;
TextView lt, ln;
String provider;
Location l;
private View view;

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


    setContentView(R.layout.activity_main);

    lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    Criteria c = new Criteria();



    provider = lm.getBestProvider(c, false);
    l = lm.getLastKnownLocation(provider);

    if (l != null) {

        lng = l.getLongitude();
        lat = l.getLatitude();


    } else {

        System.out.println("No lat/long");

    }

    {


        LinearLayout l1 = new LinearLayout(this);
        l1.setBackgroundResource(R.drawable.ambulance);
        setContentView(R.layout.activity_main);
    }
}


public void ongobuttonclick(View view) {
    this.view = view;

    Spinner sp = (Spinner) findViewById(R.id.problems);

    s = sp.getSelectedItem().toString();
    sss1 = String.valueOf(lng);
    sss2 = String.valueOf(lat);



    nn = "http://192.168.2.8/tech/new_predict.php?Latitude=";
    nn1 = sss2;
    nn2 = "&Longitude=";
    nn3 = sss1;
    nn4 = "&Bimari=";
    nn5 = s;

    nnf = nn + nn1 + nn2 + nn3 + nn4 + nn5;


    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httPost = new HttpPost(nnf);
    try
    {
        httpclient.execute(httPost);
    } catch (IOException e)
    {
        e.printStackTrace();
    }

}

@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) {
    int id = item.getItemId();

    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

我服务器上的输出: -

纬度经度Bimari 0.0 0.0肺(按照旋转器选择的bimari)

手机上的Android版本是2.3.6。

如果你想我也可以添加我的logcat。

1 个答案:

答案 0 :(得分:0)

您的代码有两个问题:

  1. 检查是否实际设置了lat和lng。仅当您的设备检测到gps信号时才会设置这些值,这在室内自然会出现问题。否则,它们将保持初始化状态 - 使用0.0。

  2. 确保使用适当的HTTP方法。您的代码建议使用httpget,您应该将参数放在帖子中,如下所示:

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("latitude", lat); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

  3. 希望这有帮助。