Conexión de http de Android con OkHttp No funciona

Estoy tratando de usar OkHttp pero sigue fallando. ¿Puede alguien tener una mirada rápida y ver si sabes lo que está sucediendo. Gracias.

Log cat:

01-24 08:34:46.952: E/AndroidRuntime(31953): FATAL EXCEPTION: OkHttp Dispatcher 01-24 08:34:46.952: E/AndroidRuntime(31953): java.lang.NoClassDefFoundError: okio.Okio 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.internal.http.HttpConnection.<init>(HttpConnection.java:87) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.Connection.upgradeToTls(Connection.java:272) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.Connection.connect(Connection.java:158) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:174) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:120) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.internal.http.RouteSelector.next(RouteSelector.java:131) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:312) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:235) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.Call.getResponse(Call.java:262) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:219) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:192) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.Call.access$100(Call.java:34) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.Call$AsyncCall.execute(Call.java:156) 01-24 08:34:46.952: E/AndroidRuntime(31953): at com.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33) 01-24 08:34:46.952: E/AndroidRuntime(31953): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 01-24 08:34:46.952: E/AndroidRuntime(31953): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 01-24 08:34:46.952: E/AndroidRuntime(31953): at java.lang.Thread.run(Thread.java:841) 

Aquí está el ejemplo de código que estoy intentando utilizar. Es de un tutorial en línea (teamtreehouse.com) código Java:

 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(forecastUrl) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { runOnUiThread(new Runnable() { @Override public void run() { toggleRefresh(); } }); alertUserAboutError(); } @Override public void onResponse(Response response) throws IOException { runOnUiThread(new Runnable() { @Override public void run() { toggleRefresh(); } }); try { String jsonData = response.body().string(); Log.v(TAG, jsonData); if (response.isSuccessful()) { mCurrentWeather = getCurrentDetails(jsonData); runOnUiThread(new Runnable() { @Override public void run() { updateDisplay(); } }); } else { alertUserAboutError(); } } catch (IOException e) { Log.e(TAG, "Exception caught: ", e); } catch (JSONException e) { Log.e(TAG, "Exception caught: ", e); } } }); 

2 Solutions collect form web for “Conexión de http de Android con OkHttp No funciona”

OkHttp necesita Okio, que OkHttp utiliza para la E / S rápida y los búferes redimensionables. Puedes descargar Okio (el último JAR) aquí .

o

Android gradle: compile 'com.squareup.okio:okio:1.6.0'

Maven

 <dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>1.6.0</version> </dependency> 

Para verificaciones de versiones; Github okio

Parece que hay una dependencia en la biblioteca 1.0 de OkHTTP. Es un informe conocido. Puede seguirlo en el siguiente enlace:

https://github.com/square/okhttp/issues/870

También debe incluir la biblioteca 1.0 en las librerías del proyecto.

  • Set Cookie para Picasso
  • No se puede obtener la respuesta de OkHttp.body.toString () para devolver una cadena
  • ¿Debemos usar el proveedor de seguridad de google con OkHttp?
  • Progreso de descarga con RxJava, OkHttp y Okio en Android
  • Cuerpo del poste de OkHttp como JSON
  • HTTPS no envía algunos encabezados de autenticación con Retrofit
  • Añadir parámetros de consulta a una solicitud GET en okhttp en Android
  • ¿Cómo acceder al contexto en un Interceptor?
  • Cómo agregar un token de autenticación en el encabezado de la biblioteca Picasso
  • OkHttp PublicKey pinning en Android
  • Retrofit Tiempo de respuesta más lento en los dispositivos Android reales en comparación con el emulador y la web
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.