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:
-
Fügen Sie das Client-SDK zu Ihrer App hinzu.
-
Geben Sie
oracle_mobile_cloud_config.xml
mit Umgebungs- und Authentifizierungsdetails für das Backend ein. -
Fügen Sie Ihrer App einen SDK-Aufruf hinzu, um die Konfigurationsinformationen zu laden.
-
Fügen Sie Ihrer App einen SDK-Aufruf zur Verarbeitung der Authentifizierung hinzu.
-
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);