Llamar a API móviles

En Oracle Mobile Hub, un backend es un agrupamiento lógico de API personalizadas, recopilaciones de almacenamiento y otros recursos que puede utilizar en sus aplicaciones. El backend también proporciona el contexto de seguridad para acceder a esos recursos.

A continuación se muestran los pasos generales para utilizar un backend en la aplicación de Android:

  1. Agregue el SDK de cliente a su aplicación.

  2. Rellene oracle_mobile_cloud_config.xml con los detalles de entorno y autenticación del backend.

  3. Agregue una llamada SDK a su aplicación para cargar la información de configuración.

  4. Agregue una llamada SDK a su aplicación para gestionar la autenticación.

  5. Agregue cualquier otra llamada de SDK que desee utilizar.

Cargar Configuración del Backend

Para que las llamadas a las API de Oracle Mobile Hub que utilizan el SDK de cliente de Android se completen correctamente, debe tener la configuración del backend cargada en el archivo oracle_mobile_cloud_config.xml de la aplicación. Para ello, utilice la clase MobileManager:

MobileManager.getManager().getMobileBackend(this)

API de plataforma de llamada

Una vez cargada la información de configuración del backend móvil en la aplicación, puede realizar llamadas a clases de cliente SDK.

El objeto raíz del SDK de Android es MobileManager. El objeto MobileManager gestiona objetos MobileBackend.

El objeto MobileBackend gestiona la conectividad, la autenticación y otras transacciones entre su aplicación y su backend asociado, incluidas las llamadas a las API de la plataforma y cualquier API personalizada que haya definido. Gestiona las llamadas a las API de plataforma a través de instancias de ServiceProxy como Storage y Location.

A continuación se muestra un ejemplo de cómo se utilizarían estas clases para cargar una imagen con la API de almacenamiento:

try {
    Storage storage = MobileManager.getManager().getMobileBackend(this).getServiceProxy(Storage.class);
    StorageCollection imagesCollection = storage.getStorageCollection("FIF_Images");
    StorageObject imageToUpload = new StorageObject(null, imageBytes, "image/jpeg");
    StorageObject uploadedImage = imagesCollection.post(imageToUpload);
} catch(ServiceProxyException e) {int errorCode = e.getErrorCode();
            ...
}

La instancia ServiceProxy creada allí gestiona las llamadas a la API de la plataforma de almacenamiento, incluida la construcción de las cabeceras HTTP con las credenciales de backend móvil necesarias para acceder a la API.

Y esta es la forma de recuperar una imagen mediante la API de almacenamiento:

try {
    Storage storage = MobileManager.getManager().getMobileBackend(this).getServiceProxy(Storage.class);
    StorageCollection imagesCollection = storage.getStorageCollection("FIF_Images");
    StorageObject image = imagesCollection.get("3x4mp1e-st0r4g3-0bj3ct-k3y");byte[] imageBytes = image.getPayloadBytes();
} catch(ServiceProxyException e) {int errorCode = e.getErrorCode();
 ...
}

Llamar a API personalizadas

El SDK del cliente proporciona la clase CustomHttpResponse, la interfaz GenericCustomCodeClientCallBack y el método invokeCustomCodeJSONRequest en las clases de autorización para simplificar la llamada a las API personalizadas en Oracle Mobile Hub. Puede llamar a un método REST (GET, PUT, POST o DELETE) en un punto final en el que la carga útil de la solicitud sea JSON o está vacía, y la carga útil de respuesta es JSON o está vacía.

Utilice GenericCustomCodeClientCallBack para crear un manejador para la respuesta (que se devuelve en forma de objeto CustomHttpResponse).

A continuación, para llamar a la API personalizada, llame a invokeCustomCodeJSONRequest(GenericCustomCodeClientCallBack restClientCallback, JSONObject data, String functionName, RestClient.HttpMethod httpMethod) en el objeto Authorization.

Para realizar una llamada a un punto final de API personalizado, puede utilizar algo como éste:

import org.json.JSONObject;
import oracle.cloud.mobile.customcode.CustomHttpResponse;
import oracle.cloud.mobile.customcode.GenericCustomCodeClientCallBack;
import oracle.cloud.mobile.mobilebackend.MobileManager;
.......
 
final GenericCustomCodeClientCallBack genericCustomCodeClientCallBack = new GenericCustomCodeClientCallBack() {
    @Override
    public void requestCompleted(CustomHttpResponse response, JSONObject data, Exception e) {
        boolean getResponse = (response.getHttpStatus() >=200 && response.getHttpStatus() <300);
                   
        // write any logic based on above response
    }
};
AuthorizationAgent authorization = MobileManager.getManager().getMobileBackend(this).getAuthorization();
            
authorization.authenticate(mActivity, "user1", "pass1", successCallback);

........
// after the user successfully authenticates, make a call to the custom API endpoint
authorization.invokeCustomCodeJSONRequest(genericCustomCodeClientCallBack, null, "TaskApi/tasks", RestClient.HttpMethod.GET);