将数据从Android发送到PHP服务器

时间:2012-07-20 08:25:46

标签: android android-location

我在android中有一个应用程序,我想通过url(like=..mydata.php?lat=76867&long=87979)将android mobile的纬度和经度发送到Web PHP服务器。我有一个PHP代码,如果这个网址被命中,它会将数据保存在数据库中。

所有我没有得到的是如何通过我的Android手机将经度和经度发送到PHP服务器。

2 个答案:

答案 0 :(得分:2)

在@DarkXphenomenon答案的基础上,确保您拥有正确的权限。

// to retrieve location
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
// to retrieve location
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
// to send data
<uses-permission android:name="android.permission.INTERNET"/>

然后在您的java类中,您可以使用此代码将数据发送到php文件。一定要抓住任何例外。

String and = "&";

                    HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://my site.com/gpsdata.php?imei="+imei+and+"lat="+lat+and+"lng="+lng+and+"alt="+alt+and+"spd="+speed);

        try {

             httpclient.execute(httppost);
            Log.d(TAG, "Data sent!");
        } catch (ClientProtocolException e) {
            Toast.makeText(this,
                    "Client protokol exception ", Toast.LENGTH_LONG).show();
        } catch (IOException e) {
            Toast.makeText(this,
                    "IO exception " + e.getMessage(), Toast.LENGTH_LONG)
                    .show();
        }

您还需要确保您的位置变量(如纬度或经度)是字符串,否则会出现一些意外错误。通常,位置变量可以是double或float。要将double转换为字符串,请执行

String Longitude = Double.toString(doubleToConvertToString);

同样是Float to a String

String Longitude = Float.toString(doubleToConvertToString);

答案 1 :(得分:0)

清单需要包含

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

<强>更新 UI线程中不再允许网络连接。然后,您需要发出一个包含在AsyncTask<>中的HTTP get,它将由您的PHP后端进行解析和解释。 一个例子是http://developer.android.com/training/basics/network-ops/connecting.html