httpclient 502 error xamarin app trasnfering photo via json

Estamos recibiendo 502 error cuando intentamos enviar foto en Json. Aplicación desarrollada con . NET y Xamarin. Formulario

var jsonObjGuid = JsonConvert.SerializeObject(ObjGuid);
var jsonObjFiles = JsonConvert.SerializeObject(ObjFiles, Formatting.Indented);
var url = $"{ Session.EndpointURL}{MethodNames.UploadDossierFiles.Value}";

try
{
    using (HttpClient httpClient = new HttpClient())
    {
        httpClient.DefaultRequestHeaders.TransferEncodingChunked = true;
        httpClient.Timeout = TimeSpan.FromMilliseconds(600000);

        using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url))
        {
            //request.Headers.Add(HeaderKeys.UserAgent.Value, Resources.DefaultUserAgent);
            request.Headers.Add(HeaderKeys.UserAgent.Value, "MobileApp");
            request.Headers.Add(HeaderKeys.Token.Value, token);

            HttpContent ObjGuidContent = new StringContent(jsonObjGuid);
            HttpContent ObjFilesContent = new StringContent(jsonObjFiles);

            MultipartFormDataContent content = new MultipartFormDataContent
                {
                    {ObjGuidContent, "ObjGuid"},
                    {ObjFilesContent, "ObjFiles"}
                };

            request.Content = content;
            var response = await Policy.HandleResult(message => !message.IsSuccessStatusCode)
                .WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(2), (result, timeSpan, retryCount, context) => { })
                .ExecuteAsync(() => httpClient.SendAsync(request));
        }
    }
}

A veces funciona pero a menudo recibo este error. ¿Alguna ayuda, sugerencias? ¿Qué necesito comprobar?

Pregunta hecha hace 3 años, 4 meses, 29 días - Por javajedi


2 Respuestas:

  • El error 502 que estás experimentando generalmente indica un problema con la comunicación entre el cliente y el servidor. Aquí tienes algunas sugerencias para intentar resolver el problema:

    • Verifica la conexión a internet: Asegúrate de que el dispositivo en el que se está ejecutando la aplicación tenga una conexión estable a internet.
    • Comprueba la URL: Verifica que la URL a la que estás intentando enviar la foto sea correcta y esté accesible.
    • Verifica el tamaño de la foto: Dependiendo del tamaño de la foto que estás intentando enviar, es posible que estés excediendo los límites de tamaño permitidos. Intenta enviar una foto más pequeña para ver si el problema persiste.
    • Revisa el servidor: Asegúrate de que el servidor al que estás enviando la foto esté configurado correctamente para recibir y procesar solicitudes de este tipo.
    • Manejo de errores: Puedes incluir un manejo de errores más detallado en tu código para capturar y analizar posibles errores de comunicación que puedan estar causando el problema.

    Prueba estas sugerencias y revisa detenidamente tu código para asegurarte de que todo está configurado correctamente. Si el problema persiste, considera utilizar herramientas de depuración o registros para obtener más información sobre el error específico que estás experimentando.

    Respondida el Dec 19, 2020 a las 13:53 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Posibles causas del error HTTP 502:

    Problema en el servidor: El servidor remoto o el servicio API podría estar inactivo o sobrecargado. Problema de red: La conexión de red entre la aplicación y el servidor puede ser inestable o estar bloqueada. Error de firewall: Un firewall puede estar bloqueando la comunicación entre la aplicación y el servidor. Tiempo de espera agotado: La solicitud tarda demasiado en completarse y el servidor cierra la conexión.

    Pasos para solucionar problemas:

    1. Verifica el estado del servidor:

    Intenta acceder al servidor desde un navegador web para ver si está en línea. Comunícate con el administrador del servidor para confirmar que está funcionando correctamente.

    2. Comprueba la conexión de red:

    Asegúrate de que tu dispositivo esté conectado a una red estable. Intenta cambiar a una red diferente o reiniciar el módem/enrutador.

    3. Deshabilita los firewalls:

    Deshabilita temporalmente cualquier firewall o software antivirus que pueda estar bloqueando la comunicación.

    4. Aumenta el tiempo de espera:

    En tu código, aumenta el valor de httpClient.Timeout para dar más tiempo a la solicitud para que se complete.

    5. Verifica el formato JSON:

    Asegúrate de que los objetos ObjGuid y ObjFiles estén correctamente serializados en formato JSON. Valida el JSON utilizando un validador en línea o una herramienta como Newtonsoft.Json.

    6. Verifica los encabezados de la solicitud:

    Asegúrate de que los encabezados de la solicitud, como HeaderKeys.Token.Value, sean correctos.

    7. Inténtalo de nuevo después de un retraso:

    Si el error es intermitente, intenta enviar la solicitud de nuevo después de un breve retraso. Puedes implementar una lógica de reintento en tu código.

    Consejos adicionales:

    Utiliza una herramienta de registro para capturar cualquier mensaje de error o excepción. Habilita el registro en el sistema operativo para ver si hay errores relacionados con la red o el firewall. Ponte en contacto con el proveedor del servicio API para obtener más información sobre el error y posibles soluciones.

    Respondida el Dec 19, 2020 a las 14:01 - por Gemini

    Votos positivos: 0 | Votos negativos: 0