Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


DownloadManager – entendiendo ERROR_HTTP_DATA_ERROR

Mi aplicación depende en gran medida del componente DownloadManager android para descargar archivos con un tamaño aproximado de 3-10 mega bytes.

Cuando se amplía (a millones de descargas) el panorama general es claro:

  • ¿Alternativa a "FLAG_BLUR_BEHIND" en Android?
  • JSON: Parser de corriente de Jackson - ¿realmente vale la pena?
  • La aplicación no está disponible para Nexus 7 en Google Play
  • Cambiar el estilo de animación de ViewPager
  • Error: compileSdkVersion android-21 requiere compilar con JDK 7
  • Android: cambiar los elementos del menú de opciones mediante programación
  • ~ 50% de todas las descargas están fallando debido a ERROR_HTTP_DATA_ERROR .

    Estoy recibiendo esta información de google analytics

    De acuerdo con la documentación, este código de error significa:

    Valor de COLUMN_REASON cuando se produjo un error al recibir o procesar datos en el nivel HTTP.

    Encontré esta documentación poco informativa.
    Hay un montón de errores http fuera de allí.

    Y qué pasa con la desconexión de red en el medio de la descarga? ¿También activa el error ERROR_HTTP_DATA_ERROR después de fallar todos los intentos de reintento del gestor de descargas?

    Sería genial si alguien me ayudara a entender:

    • ¿Hay alguna manera de obtener de DownloadManager más información sobre el error de HTTP exacta?
    • ¿Cuáles son las situaciones más comunes ERROR_HTTP_DATA_ERROR puede ser disparado por el gestor de descargas?

    Otro punto que vale la pena mencionar: mientras que los errores acumulados – el usuario está conectado a la red WIFI (estoy configurando el gestor de descargas para descargar sólo a través de wifi)

    Por favor no me sugiera que no utilice el encargado de la transferencia directa en todos. Conozco esta opción, ventajas y desventajas. Estoy guardando esta opción como último recurso.

  • DrawerLayout modificar la sensibilidad?
  • Cómo cambiar el tamaño de fuente de tabhost en android
  • OnBindViewHolder () nunca se llama en vista en posición aunque RecyclerView.findViewHolderForAdapterPosition () devuelve null en esa posición
  • Java.lang.ClassNotFoundException después de cambiar nada en el proyecto, pero actualizar eclipse android sdk
  • ¿Cómo desactivar un botón de Android?
  • Android: establece sólo un relleno de textview mediante programación
  • 3 Solutions collect form web for “DownloadManager – entendiendo ERROR_HTTP_DATA_ERROR”

    En cuanto a la fuente de DownloadManager ERROR_HTTP_DATA_ERROR es devuelto por un método getErrorCode(int) esta es la línea exacta:

      case Downloads.Impl.STATUS_HTTP_DATA_ERROR: return ERROR_HTTP_DATA_ERROR; 

    android.provider.Downloads tiene estados que están enmascarados aquí con constantes de la clase DownloadManager , en su fuente :

     public static final int STATUS_HTTP_DATA_ERROR = 495; 

    Ahora tienes que averiguar qué causa el error HTTP 495 . Después de Googling un poco llegué a descubrir que este código de respuesta de error es sólo relacionados con Google y se produce a menudo al descargar aplicaciones desde la tienda.

    Se sugirió una corrección para Go to Settings - Apps- All- Download manager and Clear data.

    Por lo tanto, en conclusión de mi investigación limitada, creo que es un problema relacionado con la implementación de DownloadManager subyacente en lugar de algún problema de red o servidor, y ya que no hay solución / solución definitiva disponible (mis amigos también se enfrentan a una situación similar) debería probar otras alternativas.

    ¿Cuáles son las situaciones más comunes ERROR_HTTP_DATA_ERROR puede ser disparado por el gestor de descargas?

    Sin ver ningún código es adivinar el trabajo. De los documentos:

    Si se produjo un error HTTP, se mantendrá el código de estado HTTP como se define en RFC 2616.

    Esto le dará un error de HTTP estándar desde el que puede encontrar un código de estado 6.1.1 y una frase de motivo . Si tienes millones de descargas, y estas son de una serie limitada de sitios, esto podría ser un problema que está más allá de tu aplicación, ya que los servidores del sitio web pueden no estar haciendo frente al tráfico.

    Y qué pasa con la desconexión de red en el medio de la descarga?

    Los problemas de conectividad a Internet podrían causar;

     "408" ; Section 10.4.9: Request Time-out 

    ¿También activa el error ERROR_HTTP_DATA_ERROR después de fallar todos los intentos de reintento del gestor de descargas?

    Posiblemente. Para lanzar este tipo de error, debe ser un problema con la aplicación de comunicación con y / o intentar y / o terminar la descarga en el sitio web.

    ¿Hay alguna manera de obtener de DownloadManager más información sobre el error de HTTP exacta?

    Más allá de usar try and catches y registrar los errores en los métodos relevantes donde su aplicación utiliza el DownloadManager , y luego probar y esperar el logcat cuando recibe este error, la otra opción sería usar una biblioteca remota o una herramienta de terceros para obtener El registro de errores remotos y los informes de fallos de la aplicación desplegada.

    Hay muchos servicios de terceros y bibliotecas que ofrecen esto, estoy usando una de las bibliotecas de código abierto de buena reputación como un ejemplo.

    En cuanto a los errores en línea y el registro de fallos, ACRA es de código abierto y proporciona esta característica. Esto usó los productos de Google para almacenar informes libremente, pero como el uso ha aumentado, Google ha retirado este soporte, sin embargo hay características ofrecidas por ACRA y otros proveedores, o puede administrar sus propios informes, pero esto puede incurrir en costos.

    Implementar esto es dentro del código de la aplicación es relativamente sencillo, mediante la creación de una clase que se enganche en su aplicación mediante la extensión de la clase de aplicación y se inicia con la aplicación.

     import org.acra.*; import org.acra.annotation.*; @ReportsCrashes( formUri = "http://www.backendofyourchoice.com/reportpath" ) public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // The following line triggers the initialization of ACRA ACRA.init(this); } } 

    También necesitará configurar el informe de back-end, y hay detalles proporcionados sobre cómo hacerlo, a medida que se incrementan las opciones. Más detalles se pueden encontrar aquí, BasicSetup .

    Este blog de The Cheese Factory ofrece una vista detallada de la configuración y otras opciones para el reporte de errores en línea Cómo configurar ACRA, un sistema de seguimiento de fallos de aplicaciones de Android, en su propio host Application Crash Reports en Android

    Esto significará una actualización de tu aplicación, pero vas a tener que hacer esto de todos modos de los sonidos de la misma.

    Es difícil decir exactamente cuál es la razón del error que usted está consiguiendo. El código de error que está recibiendo es demasiado general.

    Cosas que haría para resolver el problema:

    1. Intente ver si existe alguna correlación entre la carga del servidor o la actividad del servidor y el número de errores de descarga. Esto ayudaría a determinar si el problema se origina en el servidor. Si lo hace – puede aumentar sus recursos en el lado del servidor o tratar de encontrar una manera de disminuir la carga en sus servidores para minimizar los problemas relacionados con la descarga. Cargas de servidor pesadas o un gran número de descargas simultáneas pueden causar problemas como el que está teniendo (cuellos de botella, tiempos de espera, recursos bloqueados en el lado del servidor, etc.).

    2. Si llegas a la conclusión de que tu problema en el lado del cliente – Yo consideraría la sustitución de Android Download Manager con otro o escribir su código ganado para descargar el archivo (s).

    Tendría que decir que la oferta de la Sra. Yvette para agregar más registros es importante. Lo hago en todas mis aplicaciones. Una vez que publiques más información sobre el problema, podremos identificar el problema y resolverlo más rápidamente.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.