Skip to main content
Ab dem 30. Oktober 2026 ist die online Trailblazer Community schreibgeschützt, da wir neue Community-Unterhaltungen zu Slack verschieben. Hier finden Sie häufig gestellte Fragen zu diesem Thema

Zugriff auf Salesforce-Daten über REST-APIs

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:

  • Instanziieren einer REST-Anforderung mit der RestClient-Klasse
  • Ausgeben einer asynchronen REST-Anforderung mit den Klassen RestClient und RestRequest
  • Empfangen und Verarbeiten einer REST-Antwort mit der RestResponse-Klasse

Verwenden von REST APIs

Wenn Sie soweit sind, dass Sie in Ihrer Anwendung auf die Salesforce-Daten zugreifen können, rufen Sie Salesforce REST APIs auf. REST APIs sind in der Regel auf einer niedrigen Ebene angesiedelt, auf der ein Entwickler über rudimentäre Netzwerkaufrufe manuell darauf zugreifen kann. Das brauchen Sie jedoch nicht zu tun – Sie haben ja das Mobile SDK, das den Wust von Arbeit für Sie erledigt.

Hier eine Übersicht der Klassen, die REST API-Aufrufe verarbeiten. All diese Klassen sind im com.salesforce.androidsdk.rest-Paket zu Hause.

  • ClientManager: Dient als Factory für RestClient-Instanzen. Verarbeitet darüber hinaus Account-Anmeldungen und Handshakes mit dem Salesforce-Server.
  • RestClient: Verwaltet das Protokoll für das Senden von REST-API-Anforderungen an den Salesforce-Server.
    Erstellen Sie RestClient-Instanzen nicht direkt. Rufen Sie stattdessen die Methode SalesforceSDKManager.getInstance().getRestClient() auf.
  • RestRequest: Stellt REST-API-Anforderungen dar, die anhand der von Ihnen bereitgestellten Daten formatiert wurden. Dient auch als Factory für Instanzen von sich selbst.
Note

Erstellen Sie RestRequest-Instanzen nicht direkt. Rufen Sie stattdessen eine geeignete statische RestRequest-Getter-Funktion wie RestRequest.getRequestForCreate() auf.

  • RestResponse: Enthält den Antwortinhalt im angeforderten Format. Die RestRequest-Klasse erstellt RestResponse-Instanzen und gibt sie über Ihre Implementierung der RestClient.AsyncRequestCallback-Schnittstelle an Ihre Anwendung zurück.
  1. Die Anwendung ruft eine statische Methode in der RestRequest-Klasse auf, um eine konfigurierte RestRequest-Instanz zu erstellen.
  2. Die Anwendung übergibt die neue RestRequest-Instanz und eine Instanz der AsyncRequestCallback-Schnittstelle an die RestClient.sendAsync()-Methode.
  3. Das Mobile SDK sendet die REST-Anforderung, die im RestRequest-Objekt angegeben wurde, an den Salesforce-Cloud-Service.
  4. Salesforce verarbeitet die Anforderung und gibt eine JSON-Antwort an die Anwendung zurück.
  5. Das Mobile SDK packt die JSON-Antwort in ein neues RestResponse-Objekt.
  6. Das Mobile SDK übergibt das neue RestResponse-Objekt an die AsyncRequestCallback-Implementierung der Anwendung weiter, wo es genutzt werden kann.

Noch wach? Gehen wir doch mal über die begriffliche Ebene hinaus und schauen uns diese Informationen bei der Arbeit in der Praxis Ihrer Anwendung an.

Die sendRequest()-Methode

Ihre MainActivity-Klasse sendet REST-Anforderungen und nutzt dann die REST-Antworten zum Auffüllen ihrer Listenansicht. Jetzt tauchen wir nochmal ein in den MainActivity-Code, um diesen Flow zu verfolgen.

  1. Erweitern Sie im Fenster "Project" (Projekt) in Android Studio app | src | com.mytrail.android.
  2. Doppelklicken Sie auf MainActivityMainActivity.
  3. Suchen Sie nach der Methode onFetchContactsClick. Beachten Sie, dass diese unscheinbare Methode eine sendRequest()-Methode mit einer SOQL-Anweisung aufruft.
fun onFetchContactsClick(v: View) {
    sendRequest("SELECT Name FROM Contact")
}
  1. Klicken Sie mit der rechten Maustaste auf sendRequest und wählen Sie Go To (Wechseln zu) | Implementation(s) (Implementierung(en)) aus. Wie Sie feststellen können, ist sendRequest() eine private Methode in Ihrer MainActivity-Klasse. Gut, dass diese Ihnen gehört, denn wir wollen sie später ändern.

Die sendRequest()-Methode ist diejenige, bei der Sie die Mobile SDK-REST-Klassen bei der Arbeit beobachten können. Und das sind hier die Hauptakteure:

  • client – eine private, auf die Klasse begrenzte Instanz von RestClient. Dieses Objekt wird während der Initialisierung der Anwendung automatisch instanziiert.
  • restRequest – eine neue RestRequest-Instanz.
  • RestRequest.getRequestForQuery() – eine statische RestRequest-Factory-Methode, aus der die RestRequest-Instanz hervorgeht.
  • AsyncRequestCallback – die Implementierung der Oberfläche mit den REST-Antwortrückmeldungen für Ihre Anwendung.

Erstellen der REST-Anforderung

In sendRequest() verwendet die Factory-Methode die RestRequest.getRequestForQuery() eine SOQL-Zeichenfolge und umschließt diese mit einem RestRequest-Objekt:

val restRequest = RestRequest.getRequestForQuery(ApiVersionStrings.getVersionNumber(this), soql)

Der Vorteil der Verwendung von RestRequest-Factory-Methoden ist, dass das generierte Objekt netzwerkfähig ist – es kennt bereits die HTTP-Einstellungen, die der Salesforce-Server erwartet.

Senden der REST-Anforderung

Zum Senden der Anforderung an Salesforce übergeben Sie das RestRequest-Objekt an die RestClient.sendAsync()-Methode.

client!!.sendAsync(restRequest, object : AsyncRequestCallback
    {
    ...

Der Mobile SDK-Code erzeugt das client Objekt für Sie, während er Ihre Aktivität initialisiert. Der zweite Parameter (Typ: AsyncRequestCallback) ist eine Instanz einer virtuellen Oberfläche, die auf den Empfang von REST-Antworten ausgelegt ist. In diesem Beispiel wird AsyncRequestCallback inline implementiert und instanziiert.

Das Präfix "async" wird hier immer noch angezeigt. Das muss wohl irgendeine Bedeutung haben, oder? Wenn Sie eine Anforderung asynchron senden, bedeutet dies, dass der Code Ihrer Anwendung keine Pause einlegt, um auf die Antwort zu warten. Sobald die Antwort eintrifft, ruft das Mobile SDK eine Ihrer Rückmeldungsmethoden auf, und die Anwendung setzt jeden laufenden Prozess aus, um die Antwort zu verarbeiten. Wenn die Ausführung Ihres Codes auf dem Haupt- (UI-) Thread erfolgt, müssen Sie die Anforderungen asynchron senden.

Erfassen und Verarbeiten der REST-Antwort

Wenn Salesforce die REST-Antwort zurück gibt, leitet das RestClient-Objekt diese an Ihre AsyncRequestCallback-Implementierung weiter. In der AsyncRequestCallback-Oberfläche legen Sie fest, wie Ihre Anwendung die REST-Antwort von Salesforce verarbeiten soll. Erfolgreiche REST-Antworten verarbeiten Sie in der onSuccess()-Methode:

override fun onSuccess(request: RestRequest, result: RestResponse) {
    result.consumeQuietly() // consume before going back to main thread
    runOnUiThread {
        try {
            listAdapter!!.clear()
            val records = result.asJSONObject().getJSONArray("records")
            for (i in 0..<records.length()) {
                listAdapter!!.add(records.getJSONObject(i).getString("Name"))
            }
        } catch (e: Exception) {
            onError(e)
        }
    }
}

Fehlgeschlagene Anforderungen in der onError()-Methode werden glücklicherweise wiederhergestellt.

override fun onError(exception: Exception) {
    runOnUiThread {
        Toast.makeText(this@MainActivity,
                this@MainActivity.getString(R.string.sf__generic_error),
                Toast.LENGTH_LONG,
        ).show()
    }
}

Beachten Sie, dass die REST-Antwort im JSON-Format eingeht, weshalb Programmierer sie einfach analysieren können. Ist die Anforderung erfolgreich, extrahiert die Anwendung Werte aus dem Feld "Name" zum Auffüllen der Listenansicht. Schlägt die Abfrage fehl, blendet die Anwendung eine Fehlermeldung ein.

Ressourcen

Teilen Sie Ihr Trailhead-Feedback über die Salesforce-Hilfe.

Wir würden uns sehr freuen, von Ihren Erfahrungen mit Trailhead zu hören: Sie können jetzt jederzeit über die Salesforce-Hilfe auf das neue Feedback-Formular zugreifen.

Weitere Infos Weiter zu "Feedback teilen"