Cómo enviar datos al servidor en android
Quiero enviar latitud y longitud de forma cíclica en mi aplicación. Esta es la función que obtiene estos parámetros usando GPS
private void showLocation(Location location) { String latitude = "Latitude: "; String longitude = "Longitude: "; if (location != null) { latitude += location.getLatitude(); longitude += location.getLongitude(); } }
Estaba buscando métodos en la web, encontré algunos pero no funcionó y está obsoleto
- Error de compilación de Android; Java plugin se ha aplicado, no es compatible con Android
- Java - Android - Split Activity / Class en varios archivos para una mejor organización (solución)
- Cómo quitar caracteres no válidos de una cadena?
- Cómo recuperar y modificar el contenido HTML de WebView con Http Post
- Obtenga los horarios de inicio y fin de Google Calendar Events con google-java-api-client en Android
public void sendData(double latitude, double longitude){ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://192.xxx:8080/run/mypage.php"); try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("Latitude", Double.toString(latitude))); nameValuePairs.add(new BasicNameValuePair("Longitude", Double.toString(longitude))); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); httpclient.execute(httppost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } }
Gracias de antemano 4 ayuda
- Enviar datos (ArrayList) de Actividad a Fragmento
- Android: obtenga dinámicamente la actividad actual en primer plano
- SAXParser no puede analizar algunos caracteres
- Cómo usar daga en un proyecto de biblioteca de Android
- Android acelerómetro de lectura en cualquier dirección
- Apache HttpClient HttpRequestRetryHandler nunca invocado
- Parse Exception: En la línea 1, columna 0: no se encontró ningún elemento
- ¿Por qué utilizar XML para crear GUI es una buena práctica en Android
Te recomiendo que uses la biblioteca OkHttp para trabajar en red. Su ejemplo podría ser algo como esto
private final OkHttpClient client = new OkHttpClient(); public String sendData(double latitude, double longitude){ try { RequestBody formBody = new FormBody.Builder() .add("Latitude", Double.toString(latitude)) .add("Longitude", Double.toString(longitude)) .build(); Request request = new Request.Builder() .url("http://httpbin.org/post") .post(formBody) .build(); Response response = client.newCall(request).execute(); return response.body().string(); } catch (IOException e) { return "Error: " + e.getMessage(); } }
No olvide ejecutar el código de red en un AsyncTask
class IOAsyncTask extends AsyncTask<Location, Void, String> { @Override protected String doInBackground(Location... params) { return sendData(params[0].getLatitude(), params[0].getLongitude()); } @Override protected void onPostExecute(String response) { Log.d("networking", response); } }
Y este podría ser el método onCreate
de tu actividad
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Location current = new Location(""); current.setLatitude(23.9569596); current.setLongitude(12.567567); new IOAsyncTask().execute(current); }
Tenga en cuenta que utilizo http://httpbin.org/post
como dirección remota, debe reemplazarla con su URL de punto final. En mi caso la respuesta es:
{ "args": {}, "data": "", "files": {}, "form": { "Latitude": "23.9569596", "Longitude": "12.567567" }, "headers": { "Accept-Encoding": "gzip", "Content-Length": "39", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "okhttp/3.0.1" }, "json": null, "origin": "xxx.xx.xxx.xx", "url": "http://httpbin.org/post" }
- ¿Cómo agregar un listview dentro de un viewpager?
- ¿Cómo ir para el token de actualización automáticamente cuando el token de acceso venció y obtener 401 usando HttpURLConnection en android?