如何使用 Android 中的 POST 方法 Post 任何数据

How to Post any data using POST Method in Android

请告诉我代码放在哪里。

我正在创建一个应用,

  1. 获取位置,
  2. 获取位置后,单击 Post 按钮,
  3. 很快,使用 POST (HTTP) 方法将其发送到我的 PHP 页面。

如下面的应用程序截图,您可以看到两个输入框,其中包含 LAT、LONG 和 Name 值:

我有以下代码来获取位置:

public class MainActivity extends Activity implements LocationListener {
EditText lat;
EditText lng;

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

    /********** get Gps location service LocationManager object ***********/

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

            /* CAL METHOD requestLocationUpdates */

    // Parameters :
    //   First(provider)    :  the name of the provider with which to register
    //   Second(minTime)    :  the minimum time interval for notifications,
    //                         in milliseconds. This field is only used as a hint
    //                         to conserve power, and actual time between location
    //                         updates may be greater or lesser than this value.
    //   Third(minDistance) :  the minimum distance interval for notifications, in meters
    //   Fourth(listener)   :  a {#link LocationListener} whose onLocationChanged(Location)
    //                         method will be called for each location update


    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            3000,   // 3 sec
            10, this);

    /********* After registration onLocationChanged method  ********/
    /********* called periodically after each 3 sec ***********/
}

/************* Called after each 3 sec **********/
@Override
public void onLocationChanged(Location location) {

    lat = (EditText)findViewById(R.id.lat);
    lng = (EditText)findViewById(R.id.lng);
    lat.setText(""+location.getLatitude());
    lng.setText(""+location.getLongitude());

    String str = "Latitude: "+location.getLatitude()+"Longitude: "+location.getLongitude();

    Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();
}


@Override
public void onProviderDisabled(String provider) {

    /******** Called when User off Gps *********/

    Toast.makeText(getBaseContext(), "GPS is OFF, Turn it on", Toast.LENGTH_LONG).show();
}

@Override
public void onProviderEnabled(String provider) {

    /******** Called when User on Gps  *********/

    Toast.makeText(getBaseContext(), "GPS ON ", Toast.LENGTH_LONG).show();
    Toast.makeText(getBaseContext(), "Waiting for location..... ", Toast.LENGTH_LONG).show();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}




@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;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}    

这是获取位置并将 LAT 和 LONG 值填充到输入框的代码,当 GPS 得到修复时。

现在, 我需要 POST 的代码,将所有数据导入我的 PHP 页面。

如果对你有帮助的话。这不是你需要适当的异步任务到 运行 以下代码的全部。我希望您知道要在网络清单中启用权限。 即:

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

HttpResponse YourMethod(String data,String url){       

     // Create a new HttpClient and Post Header
       HttpClient httpClient= new DefaultHttpClient();
        HttpResponse response = null;
        HttpConnectionParams.setSoTimeout(httpClient.getParams(), 60000);
        HttpPost httpPost = new HttpPost(url);
        StringEntity se = new StringEntity(data,"UTF-8"); 
        se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,"text/html"));
        httpPost.setEntity(se);

        response = httpClient.execute(httpPost);

     }

现在data是你需要发送经纬度数据的字符串

还有另一种方法可以将数据发送到您的服务器

   public HttpResponse YourMethod(String lat,String lon,Strig url) {
         HttpResponse response =null;
           // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new    HttpPost(url);

     try {

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair(<lat key from php>, lat));
    nameValuePairs.add(new BasicNameValuePair(<lat key from php>, lon));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));


    HttpResponse response = httpclient.execute(httppost);

     } catch (Exception e) {

   }
    finally{
       return response 
      }

 }