NowAPIService-Schnittstelle – Android

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 1 Minute Lesedauer
  • Die NowAPIService- Schnittstelle bietet die Möglichkeit, Anforderungen für eine angegebene ServiceNow REST API auszuführen.

    Hinweis:
    Gastanwender arbeiten nur für die NowAPIService- Schnittstelle, wenn die REST API, auf die zugegriffen wird, für Gastanwender konfiguriert ist.
    Tabelle : 1. Eigenschaften
    Name Typ Beschreibung
    konfigurieren NowServiceKonfiguration Servicekonfiguration, die dem Protokoll zugeordnet werden soll.

    NowAPIService – Daten (Endpunkt: NowAPIService.Endpoint, AbfrageParams: QueryParams, Header: Header, Text: Zeichenfolge)

    Ruft die angegebene REST-API in der angegebenen Instanz ServiceNow auf.

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    endpoint NowAPIService.Endpunkt Anzurufender REST-Endpunkt.
    queryParams Abfrageparameter Optional. Abfrageparameterobjekt, das die Abfrageparameter enthält, die im REST-Aufruf übergeben werden sollen.

    Standard: null

    headers Header Optional. Header-Objekt, das die Header enthält, die im REST-Aufruf übergeben werden sollen.

    Standard: null

    body Zeichenfolge Optional. Objekt, das den Anforderungstext und den Inhaltstyp zur Übergabe an den REST-Aufruf enthält.

    Standard: null

    Tabelle : 3. Ergebnisse
    Typ Beschreibung
    Rufen Sie<ByteArray> auf Gibt Ergebnisse vom aufgerufenen REST-Endpunkt zurück.

    suspend fun loadCases(): List<CaseItem> = withContext(Dispatchers.IO) {
      val apiService = nowServiceManager.getNowAPIService()
    
      val result = runCatching {
        val response = apiService.data(NowAPIService.Endpoint(
          relativePath = CASES_API,
          requestMethod = HttpMethod.GET,
          requireAuth = true)
        ).execute()
    
        val byteArray = response.body ?: throw Exception("Null Result")
        val buffer = Buffer()
        val reader = JsonReader.of(buffer.write(byteArray))
        val listType = Types.newParameterizedType(
          List::class.java,
          CaseItem::class.java
        )
    
        val resultType = Types.newParameterizedType(
          ResultResponse::class.java,
          listType
        )
        val adapter = moshi.adapter<ResultResponse<List<CaseItem>>>(resultType)
        adapter.fromJson(reader)
      }
    
      if (result.isSuccess) {
          result.getOrNull()?.result ?: throw Exception("Cases not in response")
      } else {
          throw result.exceptionOrNull() ?: Exception("Error Cases")
      }
    }