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.xml
con 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);