package com.proyecto.ejemplohttppost;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class MainActivity extends Activity {
private Boolean hayConexion=false;
public TextView tvData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnHit=(Button)findViewById(R.id.btnHit);
tvData=(TextView)findViewById(R.id.tvJsonItem);
String res = "";
ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
Toast.makeText(MainActivity.this, "!!!! Tenemos conexion !!!!", Toast.LENGTH_LONG).show();
hayConexion=true;
} else {
Toast.makeText(MainActivity.this, "FALLO AL CONECTAR", Toast.LENGTH_LONG).show();
hayConexion=false;
}
btnHit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(hayConexion) {
String miUrl="www.tesistev1.esy.es/indexcaca.txt";
String caca="";
//new MiTarea().execute(miUrl).toString();
tvData.setText((new MiTarea().execute(miUrl)).toString());
//tvData.setText(buffer.toString());
//tvData.setText(caca);
}
}
});
}
private class MiTarea extends AsyncTask<String,Float,StringBuffer >{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected StringBuffer doInBackground(String... strings) {
String cadena=strings[0];
HttpURLConnection connection=null;
StringBuffer buffer2=new StringBuffer();
BufferedReader reader=null;
try {
URL url = new URL("www.teasistev1.tk/indexcaca.txt");
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
buffer=buffer2;
//tvData.setText(buffer.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return buffer2;
}
@Override
protected void onProgressUpdate(Float... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(StringBuffer sb) {
super.onPostExecute(sb);
}
}
}
Estas estableciendo como texto el objeto en vez del resultado de la consulta
--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/04c07b97-9e4c-4a6a-b9e7-d58275a38b98%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
tvData.setText(buffer.toString());
Modifica la vista en el postexecute con el resultado de la peticion
--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/0ef327f5-87ab-4784-ba3d-4e2d29bc31d3%40googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/CA%2BP02rTTu7%2BEEBZcD40cggw6h14jzkc8vfJpL7Vb1C3bS2R9gg%40mail.gmail.com.
Cualquier cosa pregunta nuevamente, me cito:
En el onPreExecute podrías disparar un cargador, hacer tu petición en el doInBackground, y cerrar el cargador y configurar el texto con tvData.setText(""); en el onPostExecute ;)
Eso que dije, es así, porque si lees bien los enlaces que te pase, en el asynctask se ejecuta todo en el hilo principal menos la función doInBackground que es lo que se hace en un hilo aparte. Por eso allí debes realizar tus peticiones, y en las otras funciones podés alterar la UI
Gracias, les echare un vistazo a ver si me aclaro.
--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/a04d3360-5739-4268-91e1-8dce67f8dc6b%40googlegroups.com.
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
while ((line = reader.readLine()) != null) {
buffer.append(line);
buffer.append("\n\r");
}
Gracias por la informacion, he conseguido que funcione. Bueno, funciona mas o menos porque el archivo de texto tiene varias lineas y me lo muestra pero poniendome las lineas una detras de otra sin hacer el salto de linea. ¿puede ser a que sea un archivo txt o es que el proceso tiene algun fallo al respecto?
--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/cc77be5c-3034-4f7f-8e55-ffaab667792a%40googlegroups.com.