【问题标题】:How to Post any data using POST Method in Android如何在 Android 中使用 POST 方法发布任何数据
【发布时间】:2015-04-09 02:24:44
【问题描述】:

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

我正在创建一个应用程序,

  1. 获取位置,
  2. 获得位置后,点击发布按钮,
  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 页面的代码。

【问题讨论】:

标签: java android location http-post


【解决方案1】:

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

<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 是你需要发送 lat long 数据的 String

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

   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 
      }

 } 

【讨论】:

  • 谢谢,但我完全不明白。 来自php的lat keyYourMethod是什么跨度>
  • 这是关键。第二种方法是名称值对,您提供一个键及其对应的值
  • @Kaushik : 键就像 HTML 中的“名称”属性吗?
  • @RaviPrakash 请过去接收纬度的 php 页面代码。准备好了吗?
  • @Kaushik :不,先生,对不起我的错误......我会在更正后回复.. :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2012-05-13
  • 1970-01-01
  • 2014-07-19
  • 2012-09-10
  • 1970-01-01
  • 2010-10-19
相关资源
最近更新 更多