Mobile APIs aufrufen

In Oracle Mobile Hub ist ein Backend eine logische Gruppierung von benutzerdefinierten APIs, Speicher-Collections und anderen Ressourcen, die Sie in Ihren Apps verwenden können. Das Backend stellt außerdem den Sicherheitskontext für den Zugriff auf diese Ressourcen bereit.

Im Folgenden werden die allgemeinen Schritte zur Verwendung eines Backends in Ihrer Android-App aufgeführt:

  1. Fügen Sie das Client-SDK zu Ihrer App hinzu.

  2. Geben Sie oracle_mobile_cloud_config.xml mit Umgebungs- und Authentifizierungsdetails für das Backend ein.

  3. Fügen Sie Ihrer App einen SDK-Aufruf hinzu, um die Konfigurationsinformationen zu laden.

  4. Fügen Sie Ihrer App einen SDK-Aufruf zur Verarbeitung der Authentifizierung hinzu.

  5. Fügen Sie weitere SDK-Aufrufe hinzu, die Sie verwenden möchten.

Backend-Konfiguration laden

Für Aufrufe von Oracle Mobile Hub-APIs, die das Android-Client-SDK verwenden, müssen Sie die Konfiguration des Backends aus der Datei oracle_mobile_cloud_config.xml der App laden. Verwenden Sie hierzu die Klasse MobileManager:

MobileManager.getManager().getMobileBackend(this)

Call Platform-APIs

Nachdem die Konfigurationsinformationen des mobilen Backends in die App geladen wurden, können Sie Client-SDK-Klassen aufrufen.

Das Root-Objekt im Android-SDK ist MobileManager. Das MobileManager-Objekt verwaltet MobileBackend-Objekte.

Das MobileBackend-Objekt verwaltet Konnektivität, Authentifizierung und andere Transaktionen zwischen Ihrer Anwendung und dem zugehörigen Backend, einschließlich Aufrufen von Plattform-APIs und benutzerdefinierten APIs, die Sie definiert haben. Sie verwaltet Aufrufe von Plattform-APIs über Instanzen von ServiceProxy wie Storage und Location.

Im Folgenden finden Sie ein Beispiel dafür, wie Sie mit diesen Klassen ein Bild mit der Speicherungs-API hochladen:

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

Die Instanz ServiceProxy hat bereits Aufrufe der API für die Speicherungsplattform erstellt, einschließlich der Erstellung der HTTP-Header mit den Zugangsdaten für das mobile Backend, die für den Zugriff auf die API erforderlich sind.

Hier wird beschrieben, wie Sie ein Bild mit der Speicherungs-API abrufen können:

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

Benutzerdefinierte APIs aufrufen

Das Client-SDK enthält die Klasse CustomHttpResponse, die Schnittstelle GenericCustomCodeClientCallBack und die Methode invokeCustomCodeJSONRequest in den Autorisierungsklassen, um den Aufruf benutzerdefinierter APIs in Oracle Mobile Hub zu vereinfachen. Sie können eine REST-Methode (GET, PUT, POST oder DELETE) auf einem Endpunkt aufrufen, bei dem die Anforderungs-Payload JSON ist oder leer ist und die Antwort-Payload JSON oder leer ist.

Sie verwenden GenericCustomCodeClientCallBack, um einen Handler für die Antwort zu erstellen (der in Form eines CustomHttpResponse-Objekts zurückgegeben wird).

Um die benutzerdefinierte API aufzurufen, rufen Sie dann invokeCustomCodeJSONRequest(GenericCustomCodeClientCallBack restClientCallback, JSONObject data, String functionName, RestClient.HttpMethod httpMethod) für Ihr Authorization-Objekt auf.

Um einen Aufruf eines benutzerdefinierten API-Endpunkts zu machen, können Sie beispielsweise Folgendes verwenden:

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