OkHTTP Actualiza la interfaz de usuario desde la devolución de llamada en cola
Estoy intentando utilizar la biblioteca de OkHTTP. Al realizar una llamada al servidor y obtener una respuesta satisfactoria de nuevo. Necesito actualizar la interfaz de usuario.
¿Cómo se puede hacer esto al hacer una llamada Async usando el enqueue ()?
- Retrofit invoca el método failure () incluso cuando el código de estado de los encabezados es 200
- OKhttp: SSLProtocolException: Protocolo de enlace SSL finalizado
- Picasso detectó un OkHttp no admitido en el classpath
- okhttp carga de imagen multipart con nombre de archivo
- okHTTP utilizado internamente en dispositivos Android> 4.4 cuando se utiliza HttpUrlConnection?
client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { if (response.isSuccessful()) { // NEED TO UPDATE UI HERE } } });
- Android Retrofit2 Actualizar Oauth 2 Token
- OkHttp javax.net.ssl.SSLPeerUnverifiedException: Nombre de host domain.com no verificado
- Si Picasso repite la imagen cargando para siempre cuando no hay acceso a Internet
- Hacer la solicitud HTTP usando la biblioteca OkHttp dentro de doInBackground () de AsyncTask bloquea la operación de la interfaz de usuario
- Javax.net.ssl.SSLException: Error de lectura: ssl = 0x9524b800: Error de E / S durante la llamada al sistema, Conexión restablecida por pares
- OkHttpClient cerrar la conexión
- No se puede obtener la respuesta de OkHttp.body.toString () para devolver una cadena
- Consiguió este error con retrofit2 y OkHttp3. No se puede resolver el host "<host-name>": ninguna dirección asociada con el nombre de host
Puede consultar el código de ejemplo siguiente, espero que esto ayude!
public class MainActivity extends AppCompatActivity { private static final String LOG_TAG = "OkHttp"; private TextView mTextView; private Handler mHandler; private String mMessage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.textView); mHandler = new Handler(Looper.getMainLooper()); OkHttpClient client = new OkHttpClient(); // GET request Request request = new Request.Builder() .url("http://...") .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { mMessage = e.toString(); Log.e(LOG_TAG, mMessage); // no need inside run() mHandler.post(new Runnable() { @Override public void run() { mTextView.setText(mMessage); // must be inside run() } }); } @Override public void onResponse(Response response) throws IOException { mMessage = response.toString(); Log.i(LOG_TAG, mMessage); // no need inside run() mHandler.post(new Runnable() { @Override public void run() { mTextView.setText(mMessage); // must be inside run() } }); } }); } }
Si su código no actualiza la interfaz de usuario, le sugiero que especifique el hilo, ya que la interfaz de usuario está en su propio hilo:
client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { if (response.isSuccessful()) { runOnUiThread(new Runnable() { @Override public void run() { //TODO: update your UI } }); } } });
Prueba esto:
Handler mainHandler = new Handler(Looper.getMainLooper()); mainHandler.post(new Runnable() { @Override public void run() { // code to interact with UI } });
- ¿Cómo puedo mostrar y ocultar los anuncios de banner de admob?
- Instalación de Xamarin Studio en Windows