This question is specific to a lately strange behavior of the Azure mobile Apps Android sdk. Everything was working fine for weeks. Now, my android client app suddenly can't connect to my web app any more. A Toast says "Error while processing request". In Android Studio debugger, I found the exception inside the SDK file MobileServiceConnection.java.
java.io.IOException: stream was reset: PROTOCOL_ERROR In Azure Portal, my app shows "Healthy" status, but I can see the HTTP errors. Please help. Following is my code, which was working fine and now throws error.
// Create the Mobile Service Client instance, using the provided mobile app URL. try { mClient = new MobileServiceClient(mMobileBackendUrl, activityContext).withFilter( new ServiceFilter() { @Override public ListenableFuture<ServiceFilterResponse> handleRequest(ServiceFilterRequest request, NextServiceFilterCallback nextServiceFilter) { // Get the request contents String url = request.getUrl(); String content = request.getContent(); if (url != null) { Log.d("Request URL:", url); } if (content != null) { Log.d("Request Content:", content); } // Execute the next service filter in the chain ListenableFuture<ServiceFilterResponse> responseFuture = nextServiceFilter.onNext(request); Futures.addCallback(responseFuture, new FutureCallback<ServiceFilterResponse>() { @Override public void onFailure(Throwable exception) { Log.d("Exception:", exception.getMessage()); } @Override public void onSuccess(ServiceFilterResponse response) { if (response != null && response.getContent() != null) { Log.d("Response Content:", response.getContent()); } } }); return responseFuture; } } ); setAzureClient(mClient); }catch(MalformedURLException e){ createAndShowDialog(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error"); }catch(Exception e){ createAndShowDialog("There was an error creating the Mobile Service. "+ e.toString(), "Error"); } Toast.makeText(context, context.getString(R.string.online_authentication), Toast.LENGTH_SHORT).show(); authenticate(); } private void authenticate() { // give access only to authenticated users via Google account authentication HashMap<String, String> parameters = new HashMap<>(); parameters.put("access_type", "offline");//use "Refresh tokens" //login with the Google provider. This will create a call to onActivityResult() method inside the context Activity, which will then call the onActivityResult() below. mClient.login(MobileServiceAuthenticationProvider.Google, url_scheme_of_your_app, GOOGLE_LOGIN_REQUEST_CODE, parameters); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // When request completes if (requestCode == 1) { try { MobileServiceActivityResult result = mClient.onActivityResult(data); if (result.isLoggedIn()) { Toast.makeText(context, context.getString(R.string.azure_auth_login_success) /*+ " " + mClient.getCurrentUser().getUserId()*/, Toast.LENGTH_SHORT).show(); mUserId = mClient.getCurrentUser().getUserId(); } else {//>>>>THIS IS WHERE I AM GETTING THE ERROR String errorMessage = result.getErrorMessage(); Toast.makeText(context, errorMessage, Toast.LENGTH_SHORT).show();// Error While processing request (it comes form the MobileServiceConnection.java file inside sdk) } }catch(Exception e){ Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show(); } } }