Skip to main content
La Trailblazer Community en línea pasará a ser de solo lectura el 30 de octubre de 2026, ya que trasladaremos las nuevas conversaciones de la comunidad a Slack. Consulte las preguntas frecuentes

Acceder a los datos de Salesforce mediante API de REST

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Crear una instancia de una solicitud REST con la clase RestClient.
  • Generar una solicitud REST asíncrona con las clases RestClient y RestRequest.
  • Recibir y procesar una respuesta REST con la clase RestResponse.

Uso de API de REST

Cuando esté listo para acceder a los datos de Salesforce en su aplicación, llame a las Salesforce. Por regla general, las API de REST son lo bastante sencillas para que los desarrolladores puedan acceder a ellas manualmente mediante llamadas de red rudimentarias. No obstante, no necesita hacer esto, ya que dispone de Mobile SDK para que realice las tareas tediosas por usted.

Este es un resumen de las clases que controlan las llamadas de API de REST. Todas estas clases residen en el paquete com.salesforce.androidsdk.rest.

  • ClientManager: Se usa como generador de instancias de RestClient. Además, controla los inicios de sesión de cuenta y el protocolo de enlace con el servidor de Salesforce.
  • RestClient: Controla el protocolo para el envío de solicitudes de API de REST al servidor de Salesforce.
    No cree instancias de RestClient directamente. En su lugar, llame al método SalesforceSDKManager.getInstance().getRestClient().
  • RestRequest: Representa solicitudes de API de REST con formato a partir de los datos que proporcione. Además, funciona como un generador de sus propias instancias.
Note

No cree instancias de RestRequest directamente. En su lugar, llame a una función estática de método get RestRequest apropiada, como RestRequest.getRequestForCreate().

  • RestResponse: Incluye el contenido de la respuesta en el formato solicitado. La clase RestRequest crea instancias de RestResponse y las devuelve a la aplicación mediante la implementación de la interfaz RestClient.AsyncRequestCallback.
  1. La aplicación llama a un método estático en la clase RestRequest para crear una instancia de RestRequest configurada.
  2. La aplicación pasa la nueva instancia de RestRequest y una instancia de la interfaz AsyncRequestCallback al método RestClient.sendAsync().
  3. Mobile SDK envía la solicitud REST presentada en el objeto RestRequest al servicio en la nube de Salesforce.
  4. Salesforce procesa la solicitud y devuelve una respuesta JSON a la aplicación.
  5. Mobile SDK empaqueta la respuesta JSON en un nuevo objeto RestResponse.
  6. Mobile SDK pasa el nuevo objeto RestResponse a la implementación AsyncRequestCallback de la aplicación para su consumo.

¿Sigue despierto? Vamos a ir más allá del nivel conceptual para ver esta información en acción en el mundo real de su aplicación.

Método sendRequest()

La clase MainActivity envía solicitudes REST y, a continuación, usa las respuestas REST para completar su vista de lista. Retrocedamos al código de MainActivity para seguir este flujo.

  1. En la ventana Project (Proyecto) de Android Studio, expanda app | src | com.mytrail.android.
  2. Haga doble clic en MainActivity.
  3. Busque el método onFetchContactsClick. Observe que este diminuto método llama al método sendRequest() con una declaración SOQL.
fun onFetchContactsClick(v: View) {
    sendRequest("SELECT Name FROM Contact")
}
  1. Haga clic con el botón derecho en sendRequest y, luego, seleccione Go To (Ir a) | Implementation(s) (Implementaciones). Ocurre que sendRequest() es un método privado en la clase MainActivity. Es estupendo que sea suyo, ya que vamos a cambiarlo más adelante.

El método sendRequest() es donde ve las clases REST de Mobile SDK en acción. Los elementos principales son:

  • client (cliente): Instancia de ámbito de clase privada de RestClient. En el caso de este objeto, se crea una instancia automáticamente durante la inicialización de la aplicación.
  • restRequest: Nueva instancia de RestRequest.
  • RestRequest.getRequestForQuery(): Método de generador RestRequest estático que crea la instancia de RestRequest.
  • AsyncRequestCallback: Implementación de la aplicación de la interfaz de devolución de llamada de respuesta REST.

Crear la solicitud REST

En sendRequest(), el método de generador RestRequest.getRequestForQuery() usa una cadena SOQL y la incluye en un objeto RestRequest.

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

La ventaja de usar métodos de generador RestRequest es que el objeto generado está listo para la red, ya que conoce la configuración HTTP que espera el servidor de Salesforce.

Enviar la solicitud REST

Para enviar la solicitud a Salesforce, pase el objeto RestRequest al método RestClient.sendAsync().

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

El código de Mobile SDK crea el objeto client (cliente) por usted mientras inicializa su actividad. El segundo parámetro, del tipo AsyncRequestCallback, es una instancia de una interfaz virtual diseñada para recibir respuestas REST. En este ejemplo, AsyncRequestCallback se implementa e instancia en línea.

El prefijo “async” sigue apareciendo aquí. Esto debe significar algo importante. Cuando envía una solicitud de forma asíncrona, el código de la aplicación no se pausa para esperar la respuesta. Cuando llega la respuesta, Mobile SDK llama a uno de los métodos de devolución de llamada y la aplicación suspende brevemente cualquier acción para procesar la respuesta. Debe enviar las solicitudes de forma asíncrona cuando la ejecución del código tenga lugar en el subproceso principal (IU).

Capturar y procesar la respuesta REST

Cuando Salesforce devuelve la respuesta REST, el objeto RestClient la reenvía a la implementación AsyncRequestCallback. En la interfaz AsyncRequestCallback, defina cómo controla la aplicación la respuesta REST de Salesforce. Puede controlar las respuestas REST correctamente en el método onSuccess().

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

De este modo, puede solucionar debidamente las solicitudes con errores en el método onError().

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

Observe que la respuesta REST llega en formato JSON, por lo que es fácil de analizar para los humanos que escriben código. Si la consulta se realiza correctamente, la aplicación extrae los valores del campo de nombre para completar la vista de lista de la interfaz de usuario. Si la consulta genera un error, la aplicación muestra un mensaje emergente que contiene el mensaje de error.

Recursos

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios