如何在Android中使用POST方法发布任何数据

时间:2015-04-09 02:24:45

标签: java android location http-post

请告诉我在哪里放置代码。

我正在创建一个应用

  1. 获取位置,
  2. 获取位置后,单击“发布”按钮
  3. 快速,使用POST(HTTP)方法将其发送到我的PHP页面。
  4. 如下面的应用截图中,你可以看到两个输入框,带有LAT& LONG&名称值:

    Screen Shot

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

    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&的代码。当GPS得到修复时,输入框的值很长。

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

1 个答案:

答案 0 :(得分:3)

如果它对你有所帮助。您需要正确的异步任务才能运行以下代码。我希望你知道在网络清单中启用权限。 即:

<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);

     }

现在数据是您需要发送lat long数据的字符串

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

   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 
      }

 }