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:
-
Adicione o SDK do cliente à sua aplicação.
-
Preencha o
oracle_mobile_cloud_config.xml
com detalhes de ambiente e autenticação para o backend. -
Adicione uma chamada SDK ao seu aplicativo para carregar as informações de configuração.
-
Adicione uma chamada SDK ao seu aplicativo para tratar de autenticação.
-
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);