Uso de httpclient 4.2.2 Android
Este es el núcleo de la excepción:
12-12 10:37:50.090: E/AndroidRuntime(8277): Caused by: java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>
Estoy utilizando Apache httpclient 4.2.2. Sin embargo, Android ha decidido que usar su biblioteca de httpclient Apache desactualizada es una mejor opción.
- Javax.net.ssl.SSLPeerUnverifiedException: Ningún certificado de compañero mientras estoy trabajando con google place api en android
- Usando retrofit con persistencia de Cookie
- Problemas de tiempo de espera de conexión HTTP
- ¿Cuál es la forma estándar de publicar el objeto JSON junto con el archivo utilizando MultipartEntityBuilder y el cliente HTTP en Android
- Problemas de seguimiento de la raíz de la "estabilidad" de la red raíces
¿Cómo puedo evitar esta excepción?
Por si acaso: Cambiar el espacio de nombres org.apache no es una opción ya que esta excepción está siendo lanzada por una biblioteca de código cerrado.
- Android: excepción no captada lanzada por el finalizador
- ¿Cómo puedo importar correctamente HttpClient de org.apache en Android usando el archivo de compilación gradle?
- Diferencia entre ConnectionTimeoutException y SSLException con el mensaje "Tiempo de espera de conexión agotado"
- Conversión de httpclient 3 a httpclient 4 (política de cookies)
- Android API 23 - HttpClient 4.X reempaquetado
- Cómo utilizar DefaultHttpClient en Android?
- Apache conexión HTTP con Android 6.0 (Marshmallow)
- HttpClient falla con Handshake Falló en Android 5.0 Lollipop
Sin embargo, Android ha decidido que usar su biblioteca de httpclient Apache desactualizada es una mejor opción.
Google se preocupa por la compatibilidad hacia atrás. Como usted está descubriendo, HttpClient tiene diferentes APIs con diferentes versiones, y por lo tanto, si Google actualizó HttpClient, todas las aplicaciones existentes se romperían. Google necesita mantener una API pública coherente, de modo que las aplicaciones escritas para Android 1.x funcionen en Android 4.x y así sucesivamente. Google, por desgracia, seleccionó una versión de HttpClient que resultó en una rápida ruptura con las versiones más recientes de HttpClient APIs públicas.
¿Cómo puedo evitar esta excepción?
Utilice jarjar
o el equivalente para refactorizar su copia de la biblioteca HttpClient en un nombre de paquete diferente y, a continuación, utilizarlo.
Cambiar el espacio de nombres org.apache no es una opción ya que esta excepción está siendo lanzada por una biblioteca de código cerrado.
A continuación, reemplace la biblioteca de código cerrado con otra cosa. Claramente, si la biblioteca de código cerrado requiere HttpClient 4.2.2, entonces esa biblioteca de código cerrado no funcionará en Android y no es compatible con su desarrollador en Android. Incluso si tuviera que superar el problema HttpClient (por ejemplo, a través de un mod de ROM – ver más abajo), puede haber otros problemas con esta biblioteca con respecto a su compatibilidad con Android.
O bien, descargue el código fuente de Android, reemplace la versión de HttpClient por su cuenta, cree el código fuente de Android revisado, vierta los resultados en un mod de ROM e instale el mod de ROM en el dispositivo deseado. En el camino, asegúrese de probar las aplicaciones existentes para asegurarse de que no se rompen debido a su cambio (lo más probable es que utilice HttpUrlConnection
, pero es posible que no).
Este enlace podría ayudar, es un reempaquetado de HttpClient 4.2.3 para Android que puede hacer referencia como biblioteca jar / biblioteca externa en su proyecto:
- Android y PhoneGap – Error al llamar al método en NPObject
- Diseño de la interfaz de usuario de las aplicaciones de Android para que se vea el mismo en todos los modelos de teléfono?