Chamar APIs Móveis

No Oracle Mobile Hub, um backend é um agrupamento lógico de APIs personalizadas, coleções de armazenamento e outros recursos que você pode usar em seus aplicativos. O backend também fornece o contexto de segurança para acessar esses recursos.

Aqui estão as etapas gerais para usar um backend em sua aplicação Android:

  1. Adicione o SDK do cliente à sua aplicação.

  2. Preencha o oracle_mobile_cloud_config.xml com detalhes de ambiente e autenticação para o backend.

  3. Adicione uma chamada SDK ao seu aplicativo para carregar as informações de configuração.

  4. Adicione uma chamada SDK ao seu aplicativo para tratar de autenticação.

  5. Adicione quaisquer outras chamadas do SDK que você deseja usar.

Carregar a Configuração do Backend

Para que qualquer chamada para APIs Oracle Mobile Hub que usem o Cliente Android SDK para ser concluída com sucesso, você precisa ter a configuração do backend carregada do arquivo oracle_mobile_cloud_config.xml da aplicação. Faça isso usando a classe MobileManager:

MobileManager.getManager().getMobileBackend(this)

APIs de Plataforma de Chamada

Depois que as informações de configuração do backend móvel forem carregadas na aplicação, você poderá fazer chamadas para classes SDK de cliente.

O objeto raiz no Android SDK é MobileManager. O objeto MobileManager gerencia objetos MobileBackend.

O objeto MobileBackend gerencia conectividade, autenticação e outras transações entre o seu aplicativo e o backend associado, incluindo chamadas para APIs de plataforma e quaisquer APIs personalizadas que você tenha definido. Ele gerencia chamadas para APIs de plataforma por meio de instâncias de ServiceProxy como Storage e Location.

Este é um exemplo de como você usaria essas classes para fazer upload de uma imagem usando a API de Armazenamento:

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();
            ...
}

A instância ServiceProxy criada gerencia chamadas à API da plataforma de Armazenamento, incluindo a construção dos cabeçalhos HTTP com as credenciais de backend móvel necessárias para acessar a API.

E aqui está como você pode recuperar uma imagem usando a API de Armazenamento:

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();
 ...
}

Chamar APIs Personalizadas

O SDK do cliente fornece a classe CustomHttpResponse, a interface GenericCustomCodeClientCallBack e o método invokeCustomCodeJSONRequest nas classes de autorização para simplificar a chamada de APIs personalizadas no Oracle Mobile Hub. Você pode chamar um método REST (GET, PUT, POST ou DELETE) em um ponto final no qual o payload de solicitação é JSON ou está vazio e o payload de resposta é JSON ou está vazio.

Use GenericCustomCodeClientCallBack para criar um handler para a resposta (que é retornado na forma de um objeto CustomHttpResponse.)

Em seguida, para chamar a API personalizada, chame invokeCustomCodeJSONRequest(GenericCustomCodeClientCallBack restClientCallback, JSONObject data, String functionName, RestClient.HttpMethod httpMethod) no objeto Authorization.

Para fazer uma chamada para um ponto final de API personalizado, você pode usar algo como este:

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);