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:
-
Agregue el SDK de cliente a su aplicación.
-
Rellene
oracle_mobile_cloud_config.xmlcon los detalles de entorno y autenticación del backend. -
Agregue una llamada SDK a su aplicación para cargar la información de configuración.
-
Agregue una llamada SDK a su aplicación para gestionar la autenticación.
-
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);