Interagieren Sie mit der öffentlichen REST-API in einer ServiceNow -Instanz
Mobile SDK stellt eine Funktionalität bereit, mit der Anwendungen Android von die öffentliche REST API in einer Instanz ServiceNow von aufrufen können.
Mithilfe der NowAPIService -API können Sie mit jeder der öffentlichen ServiceNow Basis -REST APIsinteragieren oder anwenderdefinierte REST APIs innerhalb der Instanz erstellen und diese über Ihre Anwendung Android aufrufen.
Bevor Sie eine ServiceNow -REST-API aufrufen, müssen Sie die MethodemakeNowAPIService() aufrufen, um eine Instanz des Service zu erstellen. Die Serviceinstanz wird bei Erfolg im Rückruf zurückgegeben, andernfalls wird ein Fehler ausgegeben.
Im Folgenden wird gezeigt, wie ein NowAPIService-Objekt initialisiert wird:
/**
* Helper class used to handle different Now service instances. It has an application scope or is Singleton
*/
@Singleton
class SdkManager @Inject constructor() {
private var nowApiService: NowAPIService? = null
/**
* Create the NowAPIService once in the lifetime of the application inside the Application class or another manager class
* that will be injected into other classes via dagger/hilt.
* NowAPIService should be created after initializing the NowSDK
*/
suspend fun getNowApiService(): NowAPIService? {
if (nowApiService != null) return nowApiService
return NowDataSDK.makeAPIService(URL("https://instance-name.service-now.com")).getOrThrow()
.also { this.nowApiService = it }
}
}Verwenden Sie nach der Initialisierung des NowAPIService-Objekts die Methode NowAPIService data(), um den aufzurufenden REST-Endpunkt und alle zugehörigen Parameter anzugeben:
suspend fun makeNowApiCall() {
val apiService = sdkManager.getNowApiService()
val apiPath = "api/now/table/sn_customerservice_case"
val endpoint = NowAPIService.Endpoint(HttpMethod.GET, apiPath, true)
val fieldNames = "sys_id,number,short_description,number,priority,state," +
"opened_at,account.name,account.number,contact.name,contact.email," +
"contact_type,assignment_group.name,assigned_to.name"
val queryParamsMap = mapOf("sysparm_fields" to fieldNames, "sysparm_limit" to "10")
val queryParams = QueryParams.Builder().addAll(queryParamsMap).build()
val response = runCatching {
apiService?.data(endpoint = endpoint, queryParams = queryParams)?.execute()
}
if (response.isSuccess) {
val resultString = response.getOrNull()?.body?.let { String(it) }
} else {
// Handle error
}
}