Error al procesar la solicitud en Azure -- android campo con azure campo con azure-mobile-services campo con azure-android-sdk camp Relacionados El problema

Error while processing request on Azure


1
vote

problema

Español

Tengo una aplicación conectada con Azure Backend. Creé un inicio de sesión y algunas llamadas API hace 2 meses. Trabajaron bien hasta hace unos días y luego comienza a fallar "a veces".
El registro de inicio de sesión OnFailure dice: Error al autenticar el usuario
El registro de devolución de llamada OnFailure dice: Error al procesar la solicitud
y la causa de ambos dice: Stream se restableció: protocol_error

Esta publicación es similar a este pero no lo hizo T trabajo.
algún código aquí:

loginfragment.java

      private void login(String email, String password){      loginProgressBar.setVisibility(View.VISIBLE);      try {          JsonObject params = new JsonObject();         params.addProperty("Username", email);         params.addProperty("Password", password);         ListenableFuture<MobileServiceUser> listenable = Client.logIn(getContext(), params);          Futures.addCallback(listenable, new FutureCallback<MobileServiceUser>() {             @Override             public void onSuccess(MobileServiceUser mobileServiceUser) {                 loginProgressBar.setVisibility(View.GONE);                  SharedPreferences settings = getActivity().getSharedPreferences(Client.MS_USER,0);                 SharedPreferences.Editor editor = settings.edit();                 Client.clientId = mobileServiceUser.getUserId();                 Client.token = mobileServiceUser.getAuthenticationToken();                 editor.putString(Client.MS_USER_ID, Client.clientId);                 editor.putString(Client.MS_AUTH_TOKEN, Client.token);                 editor.apply();                  Client.getInstance(getContext()).setCurrentUser(mobileServiceUser);                  Intent i = new Intent(getContext(), MainActivity.class);                 startActivity(i);             }              @Override             public void onFailure(Throwable t) {                 loginProgressBar.setVisibility(View.GONE);                 Throwable t2 = t.getCause();                 Throwable t3 = t2.getCause();                 Log.e("LoginFail", t.getMessage());                 Log.e("LoginFail", t2.getMessage());                 if(t3 != null){                     Log.e("LoginFail", t3.getMessage());                 }                 Toast.makeText(getContext(), getResources().getString(R.string.bad_login), Toast.LENGTH_LONG).show();              }         }, MoreExecutors.directExecutor());     } catch (MalformedURLException e) {         e.printStackTrace();     } }   


client.java

  public class Client { public static final String MS_USER = "MS_USER"; public static final String MS_USER_ID = "MS_USER_ID"; public static final String MS_AUTH_TOKEN = "MS_AUTH_TOKEN";  public static String clientId; public static String token;    private static MobileServiceClient instance = null;    public static MobileServiceClient getInstance(Context context) {      if (instance ==null){         try {             instance = new MobileServiceClient(Env.AZURE_URL, context);             instance.setAndroidHttpClientFactory(() -> {                 OkHttpClient client = new OkHttpClient();                 client.setReadTimeout(20, TimeUnit.SECONDS);                 client.setWriteTimeout(20, TimeUnit.SECONDS);                 return client;             });         } catch (MalformedURLException e) {             e.printStackTrace();         }     } else{         instance.setContext(context);     }     return instance; }  public static ListenableFuture<MobileServiceUser> logIn(Context context, JsonObject parameters) throws MalformedURLException {     String deviceID = "gcm:" + Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);      parameters.addProperty("device_id", deviceID);     parameters.addProperty("device_dateTime", Env.DATE_FORMAT.format(new Date()));     parameters.addProperty("device_timeZone", API.getTimezone());     parameters.addProperty("device_language", Env.LANGUAGE);     parameters.addProperty("app", Env.APP_NAME);      return getInstance(context).login("auth", parameters); }  public static  ListenableFuture<JsonElement> callApi(Context context, String apiName, JsonObject parameters, String httpMethod){      if(httpMethod.equals("POST")){         String deviceID = "gcm:" + Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);          parameters.addProperty("user_id", Client.clientId);         parameters.addProperty("device_id", deviceID);         parameters.addProperty("device_dateTime", Env.DATE_FORMAT.format(new Date()));         parameters.addProperty("device_timeZone", API.getTimezone());         parameters.addProperty("device_language", Env.LANGUAGE);         parameters.addProperty("app", Env.APP_NAME);         parameters.addProperty("role", "Patient");         return getInstance(context).invokeApi(apiName, parameters, httpMethod, null);     } else {         return getInstance(context).invokeApi(apiName, null, httpMethod, null);     }  }   
Original en ingles

I have an app connected with Azure backend. I created a login and some api calls 2 months ago. They worked fine until a few days ago and then it starts to fail "sometimes".
The login log onFailure says: Error while authenticating user
The callback log onFailure says: Error while processing request
And the cause of both says : stream was reset: PROTOCOL_ERROR

This post is to similar to this but didn't work.
Some code here:

LoginFragment.java

    private void login(String email, String password){      loginProgressBar.setVisibility(View.VISIBLE);      try {          JsonObject params = new JsonObject();         params.addProperty("Username", email);         params.addProperty("Password", password);         ListenableFuture<MobileServiceUser> listenable = Client.logIn(getContext(), params);          Futures.addCallback(listenable, new FutureCallback<MobileServiceUser>() {             @Override             public void onSuccess(MobileServiceUser mobileServiceUser) {                 loginProgressBar.setVisibility(View.GONE);                  SharedPreferences settings = getActivity().getSharedPreferences(Client.MS_USER,0);                 SharedPreferences.Editor editor = settings.edit();                 Client.clientId = mobileServiceUser.getUserId();                 Client.token = mobileServiceUser.getAuthenticationToken();                 editor.putString(Client.MS_USER_ID, Client.clientId);                 editor.putString(Client.MS_AUTH_TOKEN, Client.token);                 editor.apply();                  Client.getInstance(getContext()).setCurrentUser(mobileServiceUser);                  Intent i = new Intent(getContext(), MainActivity.class);                 startActivity(i);             }              @Override             public void onFailure(Throwable t) {                 loginProgressBar.setVisibility(View.GONE);                 Throwable t2 = t.getCause();                 Throwable t3 = t2.getCause();                 Log.e("LoginFail", t.getMessage());                 Log.e("LoginFail", t2.getMessage());                 if(t3 != null){                     Log.e("LoginFail", t3.getMessage());                 }                 Toast.makeText(getContext(), getResources().getString(R.string.bad_login), Toast.LENGTH_LONG).show();              }         }, MoreExecutors.directExecutor());     } catch (MalformedURLException e) {         e.printStackTrace();     } } 


Client.java

public class Client { public static final String MS_USER = "MS_USER"; public static final String MS_USER_ID = "MS_USER_ID"; public static final String MS_AUTH_TOKEN = "MS_AUTH_TOKEN";  public static String clientId; public static String token;    private static MobileServiceClient instance = null;    public static MobileServiceClient getInstance(Context context) {      if (instance ==null){         try {             instance = new MobileServiceClient(Env.AZURE_URL, context);             instance.setAndroidHttpClientFactory(() -> {                 OkHttpClient client = new OkHttpClient();                 client.setReadTimeout(20, TimeUnit.SECONDS);                 client.setWriteTimeout(20, TimeUnit.SECONDS);                 return client;             });         } catch (MalformedURLException e) {             e.printStackTrace();         }     } else{         instance.setContext(context);     }     return instance; }  public static ListenableFuture<MobileServiceUser> logIn(Context context, JsonObject parameters) throws MalformedURLException {     String deviceID = "gcm:" + Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);      parameters.addProperty("device_id", deviceID);     parameters.addProperty("device_dateTime", Env.DATE_FORMAT.format(new Date()));     parameters.addProperty("device_timeZone", API.getTimezone());     parameters.addProperty("device_language", Env.LANGUAGE);     parameters.addProperty("app", Env.APP_NAME);      return getInstance(context).login("auth", parameters); }  public static  ListenableFuture<JsonElement> callApi(Context context, String apiName, JsonObject parameters, String httpMethod){      if(httpMethod.equals("POST")){         String deviceID = "gcm:" + Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);          parameters.addProperty("user_id", Client.clientId);         parameters.addProperty("device_id", deviceID);         parameters.addProperty("device_dateTime", Env.DATE_FORMAT.format(new Date()));         parameters.addProperty("device_timeZone", API.getTimezone());         parameters.addProperty("device_language", Env.LANGUAGE);         parameters.addProperty("app", Env.APP_NAME);         parameters.addProperty("role", "Patient");         return getInstance(context).invokeApi(apiName, parameters, httpMethod, null);     } else {         return getInstance(context).invokeApi(apiName, null, httpMethod, null);     }  } 
           

Lista de respuestas

1
 
vote

Esto probablemente está relacionado con un problema en Azure App Service Eso es lo suficientemente raro que no se informa en la página de estado de Azure Public.

El mensaje que afectó a Azure Client recibido fue (citado del enlace anterior):

A partir de 02:00 UTC el 3 de abril de 2018, ha sido identificado como un Cliente utilizando servicios de aplicaciones que pueden haber recibido falla de conexión Notificaciones al usar aplicaciones de Android con clientes HTTP más antiguos o Navegadores de escritorio utilizando llamadas de scripts de sitio cruzado. Ingenieros tienen identificado un problema con un despliegue reciente y está investigando Opciones de mitigación. Los clientes que experimentan este problema pueden autoigarse al actualizar la configuración de configuración del sitio "HTTP20Enabled" a Falso a través de recursos.azure.com. Instrucciones sobre cómo actualizar el sitio La configuración se puede encontrar aquí: https://azure.microsoft.com/en-us/blog/azure-resource-explorer-a-new-tool-to-discover-the-azure-api/

Vaya a https://resources.azure.com/

Asegúrese de que está en modo Lectura / Escritura haciendo clic en la opción de izquierda de tu nombre.

Encuentre el sitio afectado y busque a Config & GT; Web: https://resources.azure.com /subscriptions//resourcegroups//providers/microsoft.web/sites//config/web

Cambiar la propiedad: "http20enabled": de true a FALSO haciendo clic en Editar propiedades, actualice a "Falso" y luego haga clic en Poner para guardar cambio.

Si ha probado estos pasos y continúa experimentando problemas Con su servicio de aplicaciones, cree un boleto de soporte técnico para Otra resolución de problemas: aka.ms/azsupt. Este mensaje estará cerrado en 7. días.

 

This is probably related to an issue in Azure App Service that is weirdly enough not reported on the public Azure status page.

The message that affected Azure client received was (quoted from the link above):

Starting at 02:00 UTC on 3 Apr 2018, you have been identified as a customer using App Services who may have received connection failure notifications when using Android apps with older HTTP clients or desktop browsers using cross-site scripting calls. Engineers have identified an issue with a recent deployment and are investigating mitigation options. Customers experiencing this issue can self-mitigate by updating the site config setting "http20Enabled" to false via resources.azure.com. Instructions on how to update site config can be found here: https://azure.microsoft.com/en-us/blog/azure-resource-explorer-a-new-tool-to-discover-the-azure-api/

Go to https://resources.azure.com/

Make sure you are in Read/Write mode by clicking in the option to the left of your name.

Find the affected site and browse to Config > Web: https://resources.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/web

Change the property: "http20Enabled": from true to false by clicking in Edit properties, Update to xe2x80x9cfalsexe2x80x9d and then clicking PUT to save change.

If you have tried these steps and are continuing to experience issues with your App Service, please create a technical support ticket to further troubleshoot: aka.ms/azsupt. This message will be closed in 7 days.

 
 
 
 

Relacionados problema

2  Azure Notification Hub Excepción no autorizada  ( Azure notification hub unauthorized exception ) 
Después de rastrear el siguiente enlace, mi aplicación Andumy Android siempre obtuvo una excepción de Hub de notificación no autorizada https://azure.micro...

0  Error al procesar la solicitud en Azuremobile Aplicaciones HTTP2 Error  ( Error while processing request in azuremobile apps http2 error ) 
Esta pregunta es específica para un comportamiento últimamente extraño de las aplicaciones móviles de Azure Android SDK. Todo estaba funcionando bien durante ...

2  Registro Azure Notification Hub en WebAPI Backend desde Android Client  ( Registration azure notification hub in webapi backend from android client ) 
Estamos usando ASP.NET WEBAPI 2.2 con OWIN Middleware para la autenticación. Intentamos integrar el centro de notificación de Azure para nuestra plataforma. S...

3  Resolución de conflictos del lado del servidor, Azure Mobile Services (.NET Backend)  ( Server side conflict resolving azure mobile services net backend ) 
Quiero saber si hay una manera de detectar y resolver conflictos del proyecto .NET Backend Server de Azure Mobile Services. Sé cómo hacerlo desde el lado del ...

0  java.lang.illegalstateException: no un objeto JSON: [] en la operación de Azure  ( Java lang illegalstateexception not a json object on azure operation ) 
Estoy usando Azure Mobile Aplicion para inserte mi nuevo usuario durante el registro, Luego, lanza una excepción con el mensaje: java.lang.illegalState...

1  Error al procesar la solicitud en Azure  ( Error while processing request on azure ) 
Tengo una aplicación conectada con Azure Backend. Creé un inicio de sesión y algunas llamadas API hace 2 meses. Trabajaron bien hasta hace unos días y luego c...

1  ¿Necesito llamar a mobileservicesynccontext.initializar en cada actividad?  ( Do i need to call mobileservicesynccontext initialize in each activity ) 
Cuando se usa Sincronización Offline con Azure Mobile Services Android SDK, ¿necesito llamar a mobileservicesynccontext.initializar en cada actividad que requ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos